c#发送邮件,刚开始用qq邮箱,163邮箱正常发送,换成阿里企业邮箱,报下面的错误,
不允许使用邮箱名称。 服务器响应为:authentication is required
但是 foxmail可以发送
/// <summary>
/// 发送内邮(收件人、抄送人、附件若有多个,用分号[;]隔开)
/// </summary>
/// <param name="toMail">收件人</param>
/// <param name="ccMail">抄送人</param>
/// <param name="subject">邮件主题</param>
/// <param name="content">邮件内容</param>
/// <param name="filepath">附件路径</param>
public static bool SendMailnet(string toMail, string ccMail, string subject, string content, string filepath)
{
try
{
MailMessage message = new MailMessage();
var emailAcount = System.Configuration.ConfigurationManager.AppSettings["EmailAcount"]; //发件人邮箱账号
var emailPassword = System.Configuration.ConfigurationManager.AppSettings["EmailPassword"]; //发件人邮箱密码(或者第三方邮箱的授权码)
var emailServer = System.Configuration.ConfigurationManager.AppSettings["SMTPServer"]; //SMTP服务器
var emailServerPort = System.Configuration.ConfigurationManager.AppSettings["SMTPServerPort"];//端口号
var emailAddr = System.Configuration.ConfigurationManager.AppSettings["EmailAddr"];//邮箱尾缀
//发件人邮箱地址
MailAddress fromAddr = new MailAddress(emailAcount + emailAddr);
message.From = fromAddr;
//收件人地址
//遍历收件人邮箱地址
if (toMail.Trim().Length != 0)
{
string[] receivers = toMail.Trim().Split(';');
for (int i = 0; i < receivers.Length; i++)
{
if (receivers[i].Length > 0)
{
message.To.Add(receivers[i]);//为该邮件添加联系人
}
}
}
//遍历抄送人邮箱地址
if (ccMail.Trim().Length != 0)
{
string[] ccreceivers = ccMail.Trim().Split(';');
for (int j = 0; j < ccreceivers.Length; j++)
{
if (ccreceivers[j].Length > 0)
{
message.CC.Add(ccreceivers[j]);//为该邮件添加抄送人
}
}
}
//遍历添加附件
if (filepath.Trim().Length != 0)
{
string[] attachFiles = filepath.Trim().Split(';');
for (int k = 0; k < attachFiles.Length; k++)
{
if (attachFiles[k].Length > 0)
{
Attachment data = new Attachment(attachFiles[k], MediaTypeNames.Application.Octet);
message.Attachments.Add(data);
}
}
}
//message.Body = "this is a test";
//添加邮件内容
message.Body = content;
message.IsBodyHtml = true;
message.BodyEncoding = System.Text.Encoding.UTF8;
//message.To.Add("mino0807@sina.com");
//message.Subject = "hello !";
//添加邮件标题
message.Subject = subject;
message.SubjectEncoding = System.Text.Encoding.UTF8;
SmtpClient client = new SmtpClient();
client.EnableSsl = true;//经过ssl加密
//client.Host = "smtp.qq.com";
//client.Port = 587;
client.Host = emailServer;//服务器
client.Port = Convert.ToInt32(emailServerPort);//添加端口
邮箱账户和密码
//client.Credentials = new System.Net.NetworkCredential("871597374", "tismxlbznycsbegi");
//设置发送人的邮箱账号和密码
//client.Credentials = new NetworkCredential(emailAcount, emailPassword);//163,qq邮箱
client.Credentials = new NetworkCredential(emailAcount + emailAddr, emailPassword);//企业邮箱
client.Send(message);
return true;
}
catch (Exception ex)
{
return false;
}
}](这里写自定义目录标题)
网上找了好多没有找到解决方案,后来查了好多阿里的文件,发现,下面的部分,部分邮箱可以用@前半部分用户名就行,
client.Credentials = new NetworkCredential(emailAcount, emailPassword);//163,qq邮箱
阿里企业邮箱我用了全称
lient.Credentials = new NetworkCredential(emailAcount + emailAddr, emailPassword);//企业邮箱
试完之后,发现问题解决