我正在使用以下代码发送电子邮件。代码在我的本地机器上正常工作。但是在生产服务器上,我得到了错误消息
var fromAddress = new MailAddress("mymailid@gmail.com");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("yourmailid@yourdoamain.com");
string subject = "subject";
string body = "body";
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
smtp.Send(message);
在我的Gmail A/c上,我从生产服务器运行代码后收到了以下电子邮件
Hi ,
Someone recently used your password to try to sign in to your Google
Account mymailid@gmail.com. This person was using an application such
as an email, client or mobile device.
We prevented the sign-in attempt in case this was a hijacker trying to
access your account. Please review the details of the sign-in attempt:
Friday, 3 January 2014 13:56:08 o'clock UTC IP Address: xxx.xx.xx.xxx
(abcd.net.) Location: Philadelphia PA, Philadelphia, PA, USA
If you do not recognise this sign-in attempt, someone else might be
trying to access your account. You should sign in to your account and
reset your password immediately.
Reset password
If this was you and you are having trouble accessing your account,
complete the troubleshooting steps listed at
http://support.google.com/mail?p=client_login
Yours sincerely, The Google Accounts team
我在部署到Microsoft Azure的应用程序中遇到了同样的问题。
SmtpException: SMTP服务器需要安全连接,或者SMTP服务器需要安全连接
客户端未被验证。服务器的响应是:5.5.1
认证要求。
首先,我在以下页面上批准了所有未知设备(一些来自爱尔兰的ip地址)(以gmail用户登录):
https://security.google.com/settings/u/1/security/secureaccount
我对客户端进行了如下设置:
var client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("my_user_name@gmail.com", "my_password");
只有当我在smtp-client上设置了以下属性后,它才开始工作:
client.TargetName = "STARTTLS/smtp.gmail.com";
我在部署到Microsoft Azure的应用程序中遇到了同样的问题。
SmtpException: SMTP服务器需要安全连接,或者SMTP服务器需要安全连接
客户端未被验证。服务器的响应是:5.5.1
认证要求。
首先,我在以下页面上批准了所有未知设备(一些来自爱尔兰的ip地址)(以gmail用户登录):
https://security.google.com/settings/u/1/security/secureaccount
我对客户端进行了如下设置:
var client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("my_user_name@gmail.com", "my_password");
只有当我在smtp-client上设置了以下属性后,它才开始工作:
client.TargetName = "STARTTLS/smtp.gmail.com";
我真的看过很多想法,唯一的解决方案是这种方式(适用于不同的电子邮件提供商):
try
{
ViewProgressbar("Try to connect mail-server...", progressBar1.Value = 20);
string host = dsProvider.Rows[y]["POP_hostOut"].ToString();
int port = int.Parse(dsProvider.Rows[y]["POP_portOut"].ToString()); //587
string[] email = von1.Split('@');
string userName = (dsProvider.Rows[y]["login"].ToString() == "email[0]@email[1]")? email[0]+"@"+email[1] : email[0];
string password = layer.getUserPassword(listSender.SelectedValue.ToString());
SmtpClient client = new SmtpClient(host, port);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
//A idea from MSDN but it not works. You got "The server response was: 5.5.1 Authentication Required."
//System.Net.NetworkCredential myCreds = new System.Net.NetworkCredential(userName, password, host);
//System.Net.CredentialCache cache = new System.Net.CredentialCache();
//cache.Add(host, port, "NTLM", myCreds);
///cache.GetCredential(host, port, "NTLM"); //NTLM
client.Credentials = new System.Net.NetworkCredential(userName, password);
client.Host = host;
client.Port = port;
client.EnableSsl = true;
client.Send(message);
ViewProgressbar();
}
catch (SmtpException ex)...