我必须使用我的网络应用程序发送邮件.鉴于以下代码显示The SMTP server requires a secure connection or the client was not authenticated. The server response was:
5.7.57 SMTP; 客户端未经过身份验证,无法在MAIL FROM期间发送匿名邮件.
帮我找一个合适的解决方案.谢谢.
码:
protected void btnsubmit_Click(object sender, EventArgs e)
{
Ticket_MailTableAdapters.tbl_TicketTableAdapter tc;
tc = new Ticket_MailTableAdapters.tbl_TicketTableAdapter();
DataTable dt = new DataTable();
dt = tc.GetEmail(dpl_cate.SelectedValue);
foreach (DataRow row in dt.Rows)
{
string eml = (row["Emp_Email"].ToString());
var fromAddress = "emailAddress";
var toAddress = eml;
const string fromPassword = "*****";
string body = "Welcome..";
// smtp settings
var smtp = new System.Net.Mail.SmtpClient();
{
smtp.Host = "smtp.office365.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.UseDefaultCredentials = false;
smtp.Timeout = 600000;
}
// Passing values to smtp object
smtp.Send(fromAddress, toAddress, subject, body);
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 23
@Reshma-如果你还没有想到它,这里有我试过的东西,它解决了同样的问题.
确保您设置的NetworkCredentials正确无误.例如,在我的情况下,因为它是办公室SMTP,因此必须在NetworkCredential中使用用户ID以及域名而不是实际的电子邮件ID.
您需要先将"UseDefaultCredentials"设置为false,然后设置Credentials.如果之后设置"UseDefaultCredentials",则会将NetworkCredential重置为null.
希望能帮助到你.
小智 21
我可能不是一个优秀的程序员,但你似乎将From地址作为"emailAddress"传递,这不是一个合适的电子邮件地址,对于Office365来说,需要成为Office365系统上的真实地址.
如果您将电子邮件地址硬编码为from和office 365密码,则可以验证.当然,不要把它留在那里.
Moh*_*qas 15
就我而言,我按照以下 3 个步骤进行操作,结果成功了。
\n如果您收到以下错误之一:\n535 5.7.3 身份验证失败\n5.7.57 客户端未经过身份验证以发送邮件\n您应该检查以下几项内容:
\n在正在使用的许可邮箱上启用客户端 SMTP 提交:\n从 Microsoft 365 管理中心,转到“活动用户”并选择用户。\n转到“邮件”选项卡。\n在“电子邮件应用”部分中,选择“管理电子邮件应用”。\n验证已选中(启用)经过身份验证的 SMTP 设置。\n选择“保存更改”。
\n在正在使用的许可邮箱上禁用多重身份验证(MFA):\n在 Microsoft 365 管理中心的左侧导航菜单中,选择“用户”>“活动用户”。\n在“活动用户”页面上,选择“多重身份验证”。\n在“多重身份验证”页面上,选择用户并禁用多重身份验证状态。
\n通过将“启用安全默认值”切换为“否”来禁用 Azure 安全默认值:\n作为安全管理员、条件访问管理员或全局管理员登录到\xe2\x80\xaf Azure 门户\xe2\x80\xaf。\n浏览到\xe2 \x80\xaf Azure Active Directory \xe2\x80\xaf>\xe2\x80\xaf属性。\n选择“管理安全默认值”。\n将“启用安全默认值”设置为切换为“否”。\n选择“保存”。
\nRon*_*ack 11
我花了太多时间在这上面,解决方案非常简单.我不得不使用我的"MX"作为主机和端口25.
var sClient = new SmtpClient("domain-com.mail.protection.outlook.com");
var message = new MailMessage();
sClient.Port = 25;
sClient.EnableSsl = true;
sClient.Credentials = new NetworkCredential("user", "password");
sClient.UseDefaultCredentials = false;
message.Body = "Test";
message.From = new MailAddress("test@test.com");
message.Subject = "Test";
message.CC.Add(new MailAddress("dude@good.com"));
sClient.Send(message);
Run Code Online (Sandbox Code Playgroud)
Zvi*_*ler 11
我用来遇到同样的问题.
添加域名解决了..
mySmtpClient.Credentials = New System.Net.NetworkCredential("email@domain.com", "password", "domain.com")
Run Code Online (Sandbox Code Playgroud)
小智 6
仅有上述评论中提到的两个主要原因
UseDefaultCredentials
为false,然后将Credentials Or Put设置smtp.UseDefaultCredentials = false;
为smtp.Credentials assignment
.这是一个老问题,但由于这是 google 中针对此错误的第一个结果,我想我会更新我在此问题上的进展。
我在这个问题上花了太多时间。最后,我不得不多次更改 Office 365 帐户的密码,直到我的代码成功发送电子邮件。
不必对代码进行任何更改。
如果您使用的是 Office 365,请按照以下步骤操作:
希望能帮助到你!
归档时间: |
|
查看次数: |
205572 次 |
最近记录: |