我必须使用我的网络应用程序发送邮件。鉴于以下代码显示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);
}
}
}
答案 0 :(得分:20)
@Reshma-如果你还没有想到它,这里有我试过的东西,它解决了同样的问题。
确保您设置的NetworkCredentials正确无误。例如,在我的情况下,因为它是办公室SMTP,因此必须在NetworkCredential中使用用户ID以及域名而不是实际的电子邮件ID。
您需要先将“UseDefaultCredentials”设置为false,然后设置Credentials。如果之后设置“UseDefaultCredentials”,它会将NetworkCredential重置为null。
希望它有所帮助。
答案 1 :(得分:20)
我可能不是一个优秀的程序员,但您似乎将起始地址作为" emailAddress"这不是一个合适的电子邮件地址,对于Office365来说,需要成为Office365系统上的真实地址。
如果您将电子邮件地址硬编码为来自和办公室365密码,则可以验证。当然不要把它留在那里。
答案 2 :(得分: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);
答案 3 :(得分:10)
我用来解决同样的问题。
添加域名解决了它..
mySmtpClient.Credentials = New System.Net.NetworkCredential("email@domain.com", "password", "domain.com")
答案 4 :(得分:6)
仅在上述评论中提到的两个主要原因
UseDefaultCredentials
设置为false,然后设置凭据
要么
将smtp.UseDefaultCredentials = false;
置于smtp.Credentials assignment
。答案 5 :(得分:4)
这是一个老问题,但由于这是Google首次出现此错误的结果,我想我会更新此问题的进展。
我在这个问题上花了好几个小时。最后,我不得不多次更改Office 365帐户的密码,直到我的代码成功发送电子邮件。
没有必要对代码进行任何更改。
答案 6 :(得分:2)
就我而言,我按照以下 3 个步骤进行操作并成功。
如果您遇到以下错误之一: 535 5.7.3 认证不成功 5.7.57 客户端未通过身份验证发送邮件 您应该检查以下几点:
在所使用的许可邮箱上启用客户端 SMTP 提交: 从 Microsoft 365 管理中心,转到活动用户并选择用户。 转到邮件标签。 在电子邮件应用部分,选择管理电子邮件应用。 确认已选中(启用)Authenticated SMTP 设置。 选择保存更改。
对正在使用的许可邮箱禁用多重身份验证 (MFA): 在 Microsoft 365 管理中心的左侧导航菜单中,选择用户 > 活动用户。 在活动用户的页面上,选择多重身份验证。 在多重身份验证页面上,选择用户并禁用多重身份验证状态。
通过将启用安全默认值切换为否来禁用 Azure 安全默认值: 以安全管理员、条件访问管理员或全局管理员的身份登录Azure 门户。 浏览到Azure Active Directory属性。 选择管理安全默认值。 将启用安全默认设置切换为否。 选择保存。
答案 7 :(得分:2)
在我的情况下,为Office 365中的FROM帐户打开了2因子身份验证。一旦将其关闭,则电子邮件发送成功。
答案 8 :(得分:2)
如果您使用的是Office 365,请按以下步骤操作:
希望它有所帮助!
答案 9 :(得分:1)
添加属性后开始工作:
mail.smtp.starttls.enable=true
使用:
mail.smtp.host=smtp.office365.com
mail.smtp.port=587
mail.transport.protocol=smtp
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.user=xxx@example.com
mail.smtp.password=xxx
mail.smtp.from=yyy@example.com
答案 10 :(得分:1)
我更改了Office365密码,然后尝试发送测试邮件,这对我来说就像是一个魅力。
我使用前端(数据库邮件选项)和设置为smtp.office365.com端口号587并检查了安全连接选项。使用基本身份验证并存储凭据。希望这对某人有用。
答案 11 :(得分:1)
您尝试发送电子邮件的帐户的密码可能已过期。只需检查您的密码策略过期日期即可。
答案 12 :(得分:0)
在我的情况下,我使用的是MailMessage构造函数,它接受两个字符串(to,from)并获得相同的错误。当我使用默认构造函数然后将MailAddress对象添加到MailMessage的To属性时,它工作正常。
答案 13 :(得分:0)
如果您重新排序代码,则可以正常工作。那对我有用。
func blockGeneric(dig *digest, p []byte) {
var w [64]uint32
h0, h1, h2, h3, h4, h5, h6, h7 := dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4], dig.h[5], dig.h[6], dig.h[7]
for WorkAround1 := 0; WorkAround1 < len(p); WorkAround1 += chunk {
WorkAround2 := p[WorkAround1:]
//for len(p) >= chunk {
// Can interlace the computation of w with the
// rounds below if needed for speed.
for i := 0; i < 16; i++ {
j := i * 4
w[i] = uint32(WorkAround2[j])<<24 | uint32(WorkAround2[j+1])<<16 | uint32(WorkAround2[j+2])<<8 | uint32(WorkAround2[j+3])
}
for i := 16; i < 64; i++ {
v1 := w[i-2]
t1 := (v1>>17 | v1<<(32-17)) ^ (v1>>19 | v1<<(32-19)) ^ (v1 >> 10)
v2 := w[i-15]
t2 := (v2>>7 | v2<<(32-7)) ^ (v2>>18 | v2<<(32-18)) ^ (v2 >> 3)
w[i] = t1 + w[i-7] + t2 + w[i-16]
}
a, b, c, d, e, f, g, h := h0, h1, h2, h3, h4, h5, h6, h7
for i := 0; i < 64; i++ {
t1 := h + ((e>>6 | e<<(32-6)) ^ (e>>11 | e<<(32-11)) ^ (e>>25 | e<<(32-25))) + ((e & f) ^ (^e & g)) + _K[i] + w[i]
t2 := ((a>>2 | a<<(32-2)) ^ (a>>13 | a<<(32-13)) ^ (a>>22 | a<<(32-22))) + ((a & b) ^ (a & c) ^ (b & c))
h = g
g = f
f = e
e = d + t1
d = c
c = b
b = a
a = t1 + t2
}
h0 += a
h1 += b
h2 += c
h3 += d
h4 += e
h5 += f
h6 += g
h7 += h
//p = p[chunk:]
}
dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4], dig.h[5], dig.h[6], dig.h[7] = h0, h1, h2, h3, h4, h5, h6, h7
}
答案 14 :(得分:0)
在我的情况下,我们的IT部门将MFA强制为我们的域。这意味着我们只能使用option 3 in this Microsoft article to send email。选项3涉及使用Office365连接器设置SMTP中继。
答案 15 :(得分:0)
这是在Web.config文件中对我有用的内容。最初,我除了deliveryMethod,clientDomain,defaultCredentials之外都拥有所有其他东西,而我仍然遇到相同的错误。
Environment.ObjectsFactory = new MicrosoftDIObjectsFactory(services.BuildServiceProvider)
答案 16 :(得分:0)
尝试为所用电子邮件重置密码。遇到过类似问题,改密码后修复。
答案 17 :(得分:0)
我遇到了类似的问题。请阅读此microsoft support article。 特别是这个部分。
答案 18 :(得分:-1)
将用户默认凭证设置为“ True” smtp.UseDefaultCredentials = True;
在输入凭据之前 smtp.Credentials =新的NetworkCredential(fromAddress,fromPassword);
应该没问题