使用 smtp 和 Outlook 发送电子邮件。Office365.com
Send email using smtp and Outlook.Office365.com
我越来越无法使用 outlook 发送电子邮件了。office365.com 和 ASP.NET。
我将联系表中的电子邮件地址作为 "FROM" 电子邮件传递。如果我将 "FROM" 地址从联系表单输入更改为 "no-reply@mydomain.com",它就可以工作。显然,如果您从邮件服务器所在的不同域发送电子邮件,则缺少这一步。
这是我的错误:"System.Net.Mail.SmtpException: Mailbox unavailable. The server response was: 5.7.60 SMTP; Client does not have permissions to send as this sender"。我查了一下,结果几乎告诉我要在我没有使用的 Outlook 客户端中设置权限。
请让我知道哪里出错了。谢谢
我正在使用以下身份验证来发送我的电子邮件:
//msg.From = new MailAddress("no-reply@plassonusa.com", "What's Up");
//This is the From I want to use. The 1st one is the only one that works
msg.From = new MailAddress(txtEmail.Text, "What's Up");
msg.To.Add(emailTo);
msg.Subject = "my subject";
msg.IsBodyHtml = true;
msg.Body = "foo";
msg.Priority = MailPriority.High;
var smtpClient = new SmtpClient("outlook.office365.com", 587)
{
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential("no-reply@domain.com", "mypassword"),
EnableSsl = true
};
if (msg.To.Count > 0)
{
try
{
smtpClient.Send(msg);
}
catch (Exception ex)
{
var error = ex.ToString();
}
}
我发现您的代码中遗漏的一件事是我的 SmtpClient 配置如下:
client.TargetName = "STARTTLS/smtp.office365.com";
此外,我发送的主机值为 "smtp.office365.com" 而不是 "outlook.office365.com"。
编辑:
我刚刚从我的工作代码构建了这个测试用例。这将发送一封电子邮件,前提是您拥有用于发送的帐户的有效电子邮件和密码。
string sendFromEmail = "sendfrom@email.com";
string sendFromPassword = "TBD";
using (SmtpClient client = new SmtpClient("smtp.office365.com", 587))
{
client.Credentials = new NetworkCredential(sendFromEmail, sendFromPassword);
client.EnableSsl = true;
client.TargetName = "STARTTLS/smtp.office365.com";
MailMessage mail = new MailMessage();
mail.From = new MailAddress(sendFromEmail);
mail.To.Add("destination@email.com");
mail.Subject = "Subject";
mail.Body = "Test Email";
mail.IsBodyHtml = false;
client.Send(mail);
}
希望对您有所帮助。
为了解决我的问题,我只需将 smtpClient 代码更改为以下内容:
var smtpClient = new SmtpClient()
{
Host = "127.0.0.1"
};
我们在托管网站的服务器上设置了 IIS6。我们通过 IIS7 运行 站点,但我们通过 IIS6 运行 邮件服务器。没有用户名,没有密码。就是这样。
我通过为 "From" 使用相同的电子邮件 ID 修复了它,该电子邮件 ID 用作 SMTP 用户。
在下一行
Credentials = new NetworkCredential("no-reply@domain.com", "mypassword"),
删除 "no-reply@domain.com" 并使用实际的发件人电子邮件地址。
我越来越无法使用 outlook 发送电子邮件了。office365.com 和 ASP.NET。
我将联系表中的电子邮件地址作为 "FROM" 电子邮件传递。如果我将 "FROM" 地址从联系表单输入更改为 "no-reply@mydomain.com",它就可以工作。显然,如果您从邮件服务器所在的不同域发送电子邮件,则缺少这一步。
这是我的错误:"System.Net.Mail.SmtpException: Mailbox unavailable. The server response was: 5.7.60 SMTP; Client does not have permissions to send as this sender"。我查了一下,结果几乎告诉我要在我没有使用的 Outlook 客户端中设置权限。
请让我知道哪里出错了。谢谢
我正在使用以下身份验证来发送我的电子邮件:
//msg.From = new MailAddress("no-reply@plassonusa.com", "What's Up");
//This is the From I want to use. The 1st one is the only one that works
msg.From = new MailAddress(txtEmail.Text, "What's Up");
msg.To.Add(emailTo);
msg.Subject = "my subject";
msg.IsBodyHtml = true;
msg.Body = "foo";
msg.Priority = MailPriority.High;
var smtpClient = new SmtpClient("outlook.office365.com", 587)
{
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential("no-reply@domain.com", "mypassword"),
EnableSsl = true
};
if (msg.To.Count > 0)
{
try
{
smtpClient.Send(msg);
}
catch (Exception ex)
{
var error = ex.ToString();
}
}
我发现您的代码中遗漏的一件事是我的 SmtpClient 配置如下:
client.TargetName = "STARTTLS/smtp.office365.com";
此外,我发送的主机值为 "smtp.office365.com" 而不是 "outlook.office365.com"。
编辑:
我刚刚从我的工作代码构建了这个测试用例。这将发送一封电子邮件,前提是您拥有用于发送的帐户的有效电子邮件和密码。
string sendFromEmail = "sendfrom@email.com";
string sendFromPassword = "TBD";
using (SmtpClient client = new SmtpClient("smtp.office365.com", 587))
{
client.Credentials = new NetworkCredential(sendFromEmail, sendFromPassword);
client.EnableSsl = true;
client.TargetName = "STARTTLS/smtp.office365.com";
MailMessage mail = new MailMessage();
mail.From = new MailAddress(sendFromEmail);
mail.To.Add("destination@email.com");
mail.Subject = "Subject";
mail.Body = "Test Email";
mail.IsBodyHtml = false;
client.Send(mail);
}
希望对您有所帮助。
为了解决我的问题,我只需将 smtpClient 代码更改为以下内容:
var smtpClient = new SmtpClient()
{
Host = "127.0.0.1"
};
我们在托管网站的服务器上设置了 IIS6。我们通过 IIS7 运行 站点,但我们通过 IIS6 运行 邮件服务器。没有用户名,没有密码。就是这样。
我通过为 "From" 使用相同的电子邮件 ID 修复了它,该电子邮件 ID 用作 SMTP 用户。
在下一行
Credentials = new NetworkCredential("no-reply@domain.com", "mypassword"),
删除 "no-reply@domain.com" 并使用实际的发件人电子邮件地址。