I have a contact us page that user fill contents and contents send to email like info#mywebsitename.com. in .net we define credential for smtp :
var body = c.Subject.ToString() + " from: " + c.Name + " " + c.Email + "\n\n" + c.Body;
var mailMessage = new MailMessage(c.Email, "info#mysitename.com", c.Subject.ToString(), body);
var mailAddr = new MailAddress(c.Email);
var smtpClient = new SmtpClient();
smtpClient.Host = "mail.mysitename.com";
**smtpClient.Credentials = new NetworkCredential("info#mysitename.com", "Test123");**
smtpClient.send();
any works well.
but if User change password of info#mywebsitename.com, this credential is not valid. it's a human right that user have access to password and change it! so how have valid credential for ever that customers can send email to info and site owner can reply to them and can change password.
I know can set in web.config. Is there way for dynamically set password.
you want something like this.
<system.net>
<mailSettings>
<smtp from="email#yourdomain.com" deliveryMethod="Network">
<network defaultCredentials="false" host="yourdomain" password="password" userName="username"/>
</smtp>
</mailSettings>
</system.net>
I think you have to set the property 'UseDefaultCredentials' of 'SmtpClient' to false. Depending on your email server you will eventually have to set 'EnableSsl' to true. Here is a sample of code which I have used to successfully connect to Gmail:
SmtpClient smtp = new SmtpClient("smtp.googlemail.com");
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("myaccountname#gmail.com", "mypassword");
smtp.EnableSsl = true;
Related
I was building a project that sends e-mails from my website to an account using SMTP with the Asp.NET Framework with MVC, but, when I try to send the e-mail it catches the next exception
The SMTP server requires a secure connection, or the client did not authenticate. The server response was: 5.7.0 Authentication Required
This is the code inside the try
MailMessage message = new MailMessage();
message.From = new MailAddress("myemailfortesting#gmail.com");
message.To.Add(new MailAddress(contact.Email));
message.Subject = "Test";
message.IsBodyHtml = true;
message.Body = "Name:" + contact.Name+ "Message:" + contact.Text;
using (SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587))
{
smtpClient.Credentials = new NetworkCredential("myemailfortesting#gmail.com", "p455w0rD");
smtpClient.EnableSsl = true;
smtpClient.Send(message);
}
The connection string in Views/Share/Web.config
<system.net>
<mailSettings>
<smtp from="myemailfortesting#gmail.com">
<network host="smtp.gmail.com" port="587" userName="myemailfortesting#gmail.com" password="p455w0rD" defaultCredentials="true" enableSsl="true"/>
</smtp>
</mailSettings>
</system.net>
I've already turn on the Less secure apps in my destination Google account.
What could be wrong here?
I am having a very hard time trying to send an email through an a2 hosting account. I know the code is correct as I have the same code sending emails through the Google SMTP. I was wondering if anyone had any experience or examples using a2 hosting email and SMTP c#. I've read through their documentation and it states to use user#hostingdomain.com for the username and then your password. For the server you can use the full domain name or the server name. For the port it says 587 or 465. I have tried a combination of all of these things and have not been able to connect. I keep getting this exception
"Unable to read data from the transport connection:
net_io_connectionclosed."
Thank you for any help.
Below is an example of the code I am using.
SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress("testuser#mydomain.a2hosted.com");
NetworkCredential myCred = new NetworkCredential(
"testuser#mydomain.a2hosted.com", "mypassword");
smtpClient.Host = "mydomain.a2hosted.com";
//smtpClient.Credentials = myCred;
smtpClient.Port = 587;
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.Credentials = myCred;
message.From = fromAddress;
message.Subject = "your subject";
//Set IsBodyHtml to true means you can send HTML email.
message.IsBodyHtml = true;
message.Body = "<h1>your message body</h1>";
message.To.Add("myemail#gmail.com");
smtpClient.Send(message);
All in here.
https://www.a2hosting.co.uk/kb/a2-hosting-products/windows-hosting/using-asp-net-to-send-e-mail-messages#C-example
Replace domain.a2hosted.com with your own domain name.
Replace user#example.com with the name of an e-mail account you created in Plesk.
Replace password with the password for the e-mail account you specified in the previous step.
From my config file.
<mailSettings>
<smtp from="noreply#goldendate.co.uk">
<network enableSsl="false"
defaultCredentials="false" host="yourdomain"
password="yourpassword" port="25"
userName="youremailaddress" />
</mailSettings>
If you work remotely, it'll not work.
You have to upload your code to a2hosting server and then it'll work.
I have been trying to send an email via C# from a gmail account for account registration for my website.
I have tried several ways however the same exception continues to pop up: System.Net.Mail.Smtp Exception - Connection has timed out.
This is what I inluded in my Web.config file:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network"
from="Writely <mrbk.writely#gmail.com>">
<network host="smtp.gmail.com"
port="465"
enableSsl="true"
defaultCredentials="false"
userName="mrbk.writely#gmail.com"
password="******" />
</smtp>
</mailSettings>
</system.net>
where writely is the name of my website, and mrbk.writely#gmail.com is the account I wish to send an email from.
Then in my Account Controller when I connect with my database and save the user in my table, I am creating my MailMessage object and attempting to same the mail by:
using (DBConnection conn = new DBConnection())
{
conn.UserInfoes.Add(userInfo);
conn.SaveChanges();
MailMessage mail = new MailMessage();
mail.From = new MailAddress("mrbk.writely#gmail.com");
mail.To.Add("bernice.zerafa11#gmail.com");
mail.Subject = "Welcome to Writely";
mail.Body = "Test content";
SmtpClient smtp = new SmtpClient();
smtp.Send(mail);
}
Am I missing something or doing something wrong? I read that this is the good way to do this in some other question on stack overflow so I really don't know what's the problem here.
Thanks for your help :)
You need to tell the SmtpClient what settings to use. It does not automatically read this information from the Web.Config file.
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 465);
smtp.Credentials = new NetworkCredential("mrbk.writely#gmail.com", "***");
smtp.EnableSsl = true;
smtp.Send(mail);
gmail requires authentication:
Outgoing Mail (SMTP) Server
requires TLS or SSL: smtp.gmail.com (use authentication)
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465
so what i did is
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("mrbk.writely#gmail.com", "mypwd"),
EnableSsl = true
};
client.Send("bernice.zerafa11#gmail.com", "bernice.zerafa11#gmail.com", "Welcome to Writely", "Test content");
I had the exact same problem and it's resolved after switching the port number from 465 to 587.
I had the problem on "email confirmation", "password recovery", and "sending email" and now all 3 problems are resolved :).
I know it's a pretty old post, but I usually use the existing posts to find answers instead of asking for new questions.
Thank you all for all your helps.
As I have already answered here.
This problem can also be caused by a security configuration in you gmail account.
The correct port is 587, but to authenticate you need to allow access from less secure apps in your gmail account.
Try it here
It worked for me, hope it helps..
Example in asp.net web forms/sharepoint
StringBuilder Body = new StringBuilder();
Body.Append("Your text");
String FromEmail = "you email";
String DisplayNameFromEmailMedico = "display when you receive email";
MailMessage message = new MailMessage();
message.From = new MailAddress(FromEmail, DisplayNameFromEmailMedico);
message.To.Add(new MailAddress("myclient#gmail.com"));
message.Subject = "subject that print in email";
message.IsBodyHtml = true;
message.Body = Body.ToString();
SmtpClient client = new SmtpClient();
NetworkCredential myCreds = new NetworkCredential("yoursmtpemail#gmail.com", "key from email smtp", "");
client.EnableSsl = true;
client.Credentials = myCreds;
client.Send(message);
This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
send email asp.net c#
I have sent mail several times using the technique several times before but somehow it doesnt work i am providing the code in the following:
MailMessage myMailMessage = new MailMessage();
myMailMessage.Subject = "Response From Client";
myMailMessage.Body = "hello word";
myMailMessage.From = new MailAddress("mymail#gmail.com", "jub");
myMailMessage.To.Add(new MailAddress("mymail#gmail.com", "Softden"));
SmtpClient mySmtpClient = new SmtpClient();
mySmtpClient.Send(myMailMessage);
and my web.config is:
<mailSettings>
<smtp deliveryMethod = "Network" from="Jubair <mymail#gmail.com>">
<network defaultCredentials="false" enableSsl="true" userName="mymail#gmail.com" password="Mypassword" host="smtp.gmail.com" port="587"></network>
</smtp>
</mailSettings>
it says the smtp server requires a secure connection or the client was not authenticated.. Please help
Try adding something like this
Per Dominic's answer on Stackoverflow look at he following example
using System.Net;
using System.Net.Mail;
var fromAddress = new MailAddress("from#gmail.com", "From Name");
var toAddress = new MailAddress("to#example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
//UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
//----------------- A simple approach below ---------------
I just tested this below and it works
var mail = new MailMessage();
// Set the to and from addresses.
// The from address must be your GMail account
mail.From = new MailAddress("noreplyXYZ#gmail.com");
mail.To.Add(new MailAddress(to));
// Define the message
mail.Subject = subject;
mail.IsBodyHtml = isHtml;
mail.Body = message;
// Create a new Smpt Client using Google's servers
var mailclient = new SmtpClient();
mailclient.Host = "smtp.gmail.com";//ForGmail
mailclient.Port = 587; //ForGmail
// This is the critical part, you must enable SSL
mailclient.EnableSsl = true;//ForGmail
//mailclient.EnableSsl = false;
mailclient.UseDefaultCredentials = true;
// Specify your authentication details
mailclient.Credentials = new System.Net.NetworkCredential("fromAddress#gmail.com", "xxxx123");//ForGmail
mailclient.Send(mail);
mailclient.Dispose();
//The .config settings there are two options on how you could set this up I am suspecting that this is the issue you are having
<system.net>
<mailSettings>
<smtp from="from#gmail.com" deliveryMethod="Network">
<network userName="from#gmail.com" password="mypassword" host="smtp.gmail.com" port="587"/>
</smtp>
</mailSettings>
</system.net>
or option 2
<configuration>
<appSettings>
<add key="smtpClientHost" value="mail.localhost.com"/> //SMTP Client host name
<add key="portNumber" value="587"/>
<add key="fromAddress" value="yourEmailAddress#gmail.com"/>
</appSettings>
</configuration>
Send Email from Yahoo, Gmail, Hotmail (C#)
http://www.codeproject.com/Tips/520998/Send-Email-from-Yahoo-Gmail-Hotmail-Csharp
These are evry good tutorials with samples. make your demo email id. pass your id and its password as parameters. and send mail to anyone.
http://www.codeproject.com/Articles/15807/Easy-SMTP-Mail-Using-ASP-NET-2-0
http://www.codeproject.com/Tips/371417/Send-Mail-Contact-Form-using-ASP-NET-and-Csharp
http://www.codeproject.com/Tips/490604/Sending-mail-using-ASP-NET-with-optional-parameter
if you are still unable to send email make sure to change the port number. but 587 should work normally.
Make sure you contact the email server side to see what kind of authentication they accept to relay.
This is my web.config mail settings:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="smthg#smthg.net">
<network defaultCredentials="true" host="localhost" port="587" userName="smthg#smthg.net" password="123456"/>
</smtp>
</mailSettings>
</system.net>
and here's how I try to read the values from web.config
var smtp = new System.Net.Mail.SmtpClient();
var credential = new System.Net.Configuration.SmtpSection().Network;
string strHost = smtp.Host;
int port = smtp.Port;
string strUserName = credential.UserName;
string strFromPass = credential.Password;
But credentials are always null. How can i access these values?
Since no answer has been accepted, and none of the others worked for me:
using System.Configuration;
using System.Net.Configuration;
// snip...
var smtpSection = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
string username = smtpSection.Network.UserName;
It is not necessary to use the ConfigurationManagerand get the values manually. Simply instantiating an SmtpClient is sufficient.
SmtpClient client = new SmtpClient();
This is what MSDN says:
This constructor initializes the Host, Credentials, and Port properties for the new SmtpClient by using the settings in the application or machine configuration files.
Scott Guthrie wrote a small post on that some time ago.
By using the configuration, the following line:
var smtp = new System.Net.Mail.SmtpClient();
Will use the configured values - you don't need to access and assign them again.
As for the null values - you are trying accessing the configuration values incorrectly. You are just creating an empty SmtpSection instead of reading it from configuration.
var smtpSection = (SmtpSection)ConfigurationManager.GetSection("<the section name>");
var credentials == smtpSection.Network;
I think if you have defaultCredentials="true" set you will have the credentials = null as you are not using them.
Does the email Send when you call the .Send method?
So
This is my web config mail settings:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="smthg#smthg.net">
<network defaultCredentials="false" host="localhost" port="587"
userName="smthg#smthg.net" password="123456"/>
</smtp>
</mailSettings>
</system.net>
and this is cs
SmtpClient smtpClient = new SmtpClient();
string smtpDetails =
#"
DeliveryMethod = {0},
Host = {1},
PickupDirectoryLocation = {2},
Port = {3},
TargetName = {4},
UseDefaultCredentials = {5}";
Console.WriteLine(smtpDetails,
smtpClient.DeliveryMethod.ToString(),
smtpClient.Host,
smtpClient.PickupDirectoryLocation == null
? "Not Set"
: smtpClient.PickupDirectoryLocation.ToString(),
smtpClient.Port,
smtpClient.TargetName,
smtpClient.UseDefaultCredentials.ToString)
);
//You can access the network credentials in the following way.
//Read the SmtpClient section from the config file
var smtp = new System.Net.Mail.SmtpClient();
//Cast the newtwork credentials in to the NetworkCredential class and use it .
var credential = (System.Net.NetworkCredential)smtp.Credentials;
string strHost = smtp.Host;
int port = smtp.Port;
string strUserName = credential.UserName;
string strFromPass = credential.Password;
make sure you have reference to System.Net in your application
Set defaultCredentials="false", because when it's set to true, no credentials are used.