所以我一直在搜索stackoverflow,以便通过asp网站使用gmail帐户发送电子邮件......
我尝试了许多方法,包括Sending email in .NET through Gmail,由于他获得了大量赞成,这似乎是最好的。
但遗憾的是它仍然不适合我!我一直在抽出时间。
这是我的代码:
var fromaddress = new MailAddress("from@gmail.com", "from");
var toaddress = new MailAddress("to@address.com", "to");
try
{
using (var smtpClient = new SmtpClient())
{
smtpClient.EnableSsl = true;
using (var message = new MailMessage(fromaddress, toaddress))
{
message.Subject = "Test";
message.Body = "Testing this shit!";
smtpClient.Send(message);
return true;
}
}
}
catch (Exception ex)
{
return false;
}
在我的web.config中我有
<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>
根据我访问过的几个网站,这应该工作! ..但它没有。
我还有什么问题吗?
答案 0 :(得分:2)
你永远不会在你的smtpClient.Send()方法之前设置登录添加它。
NetworkCredential NetCrd = new NetworkCredential(youracc, yourpass);
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = NetCrd;
如果它不能自动运行,请通过ConfigurationManager加载web.config。
答案 1 :(得分:1)
根据this page的建议,尝试安装telnet以查看是否可以连接到邮件服务器。它可能是您服务器上的防火墙问题。您也可以尝试使用链接中建议的其他端口。
答案 2 :(得分:1)
你的代码对我来说似乎没问题。
尝试故意输入虚假凭据。如果你得到一个不同的错误消息,你连接到Gmail,那里有一个问题。
如果你遇到相同的超时问题,它可能不是软件问题,而是防火墙问题。
longshot - 更新 也许有一个web.config问题?尝试在这样的代码中指定所有内容。我有这个在现实生活中使用Gmail,所以如果这不起作用它肯定是防火墙/连接的东西。
SmtpClient mailClient = new SmtpClient();
//This object stores the authentication values
System.Net.NetworkCredential basicCredential =
new System.Net.NetworkCredential("username@mydomain.com", "****");
mailClient.Host = "smtp.gmail.com";
mailClient.Port = 587;
mailClient.EnableSsl = true;
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = basicCredential;
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress("info@mydomain.com", "Me myself and I ");
message.From = fromAddress;
//here you can set address
message.To.Add("to@you.com");
//here you can put your message details
mailClient.Send(message);
祝你好运..
答案 3 :(得分:0)
你可以尝试一下吗?
SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();
try
{
MailAddress fromAddress = new MailAddress(ConfigurationManager.AppSettings["fromAddress"], ConfigurationManager.AppSettings["displayName"]); //Default from Address from config file
MailAddress toAddress = new MailAddress("abc@gmail.com", "from sender");
// You can specify the host name or ipaddress of your server
// Default in IIS will be localhost
smtpClient.Host = ConfigurationManager.AppSettings["smtpClientHost"];
//Default port will be 25
smtpClient.Port = int.Parse(ConfigurationManager.AppSettings["portNumber"]); //From config file
//From address will be given as a MailAddress Object
message.From = fromAddress;
// To address collection of MailAddress
message.To.Add(toAddress);
message.Subject = ConfigurationManager.AppSettings["Subject"]; //Subject from config file
message.IsBodyHtml = false;
message.Body = "Hello World";
smtp.DeliveryMethod = SmtpDeliveryMethod.NetWork
smtpClient.Send(message);
}
catch (Exception ex)
{
throw ex.ToString();
}
配置设置为
<configuration>
<appSettings>
<add key="smtpClientHost" value="mail.localhost.com"/> //SMTP Client host name
<add key="portNumber" value="25"/>
<add key="fromAddress" value="defaultSender@gmail.com"/>
<add key="displayName" value="Auto mail"/>
<add key="Subject" value="Auto mail Test"/>
</appSettings>
</configuration>
答案 4 :(得分:0)
将这些设置EnableSSL = true
和defaultCredentials="false"
放入您的web.config设置中。 Gmail smtp服务器要求SSL设置为true,如果您提供凭据,则mailclient.UseDefaultCredentials = false
应为false。
更新Web.Config设置:
<mailSettings>
<smtp from="from@gmail.com" deliveryMethod="Network">
<network userName="from@gmail.com" password="mypassword" host="smtp.gmail.com" defaultCredentials="false" port="587" enableSsl="true"/>
</smtp>
</mailSettings>
在web.config中提供设置后,检查这个较短的代码以发送邮件。即使它发送电子邮件的速度也快,而不是在邮件发送功能中创建smtpclient设置时指定设置。
Public void SendEmail(string toEmailAddress, string mailBody)
{
try
{
MailMessage mailMessage = new System.Net.Mail.MailMessage();
mailMessage.To.Add(toEmailAddress);
mailMessage.Subject = "Mail Subjectxxxx";
mailMessage.Body = mailBody;
var smtpClient = new SmtpClient();
smtpClient.Send(mailMessage);
return "Mail send successfully";
}
catch (SmtpException ex)
{
return "Mail send failed:" + ex.Message;
}
在我身边工作非常好..
答案 5 :(得分:-1)
var smtpClient = new SmtpClient(gmailSmtpServer, gmailSmtpPort)
{
Credentials = new NetworkCredential(FromGEmailAddress, FromGEmailAddressPassword),
EnableSsl = true
};
try
{
using (var message = new MailMessage(fromaddress, toaddress))
{
message.Subject = "Test";
message.Body = "Testing this shit!";
smtpClient.Send(message);
return true;
}
}
catch (Exception exc)
{
// error
return false;
}