不使用凭据 C# 发送邮件
Mail send using no credentials C#
各位。
我需要使用 C# 发送无回复邮件。网络管理员告诉我,SMTP 服务器配置为发送此类邮件(使用没有密码的任何帐户)。我正在尝试这个:
System.Net.NetworkCredential credencials = new System.Net.NetworkCredential();
credencials.UserName = "mail@domain.com";
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient();
mail.To.Add(email);
mail.From = new MailAddress("mail@domain.com");
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = message;
SmtpServer.Host = "smtpserver";
SmtpServer.Port = 25;
SmtpServer.Credentials = credencials;
SmtpServer.EnableSsl = true;
SmtpServer.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
SmtpServer.Send(mail);
我试过没有凭据,使用空字符串作为密码,但似乎没有任何效果。
我是否忘记了任何特殊参数或配置?
尝试删除此行以查看更改后收到的错误:
SmtpServer.Credentials = 凭证;
尽量减少您设置的属性数量。我认为您至少需要实例化 smtpclient 和 mailmessage。
最低人数:
SmtpClient smtp = new SmtpClient("smtpserver");
MailMessage mail = new MailMessage();
设置:
mail.To
mail.From
mail.Subject
mail.Body
smtp.Send(mail);
如果您将代码放在 try
& catch
块中,将会对您有很大帮助,这样您就可以查看是否有任何异常被抛出。 (试图评论,没有足够的声誉,我的道歉)
我认为在端口 25 上提供用户名和使用 SSL 的组合意味着尝试了身份验证但失败并且尝试了错误的协议协商。如果您按以下方式更改代码,会发生什么情况?
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient();
mail.To.Add(email);
mail.From = new MailAddress("mail@domain.com");
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = message;
SmtpServer.Host = "smtpserver";
SmtpServer.Port = 25;
SmtpServer.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
try {
SmtpServer.Send(mail);
}
catch (Exception ex) {
Debug.WriteLine("Exception Message: " + ex.Message);
if (ex.InnerException != null)
Debug.WriteLine("Exception Inner: " + ex.InnerException);
}
我在这里假设您尝试使用的服务器支持无需身份验证的邮件中继,这应该排除 Internet 上任何合理的配置。
各位。 我需要使用 C# 发送无回复邮件。网络管理员告诉我,SMTP 服务器配置为发送此类邮件(使用没有密码的任何帐户)。我正在尝试这个:
System.Net.NetworkCredential credencials = new System.Net.NetworkCredential();
credencials.UserName = "mail@domain.com";
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient();
mail.To.Add(email);
mail.From = new MailAddress("mail@domain.com");
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = message;
SmtpServer.Host = "smtpserver";
SmtpServer.Port = 25;
SmtpServer.Credentials = credencials;
SmtpServer.EnableSsl = true;
SmtpServer.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
SmtpServer.Send(mail);
我试过没有凭据,使用空字符串作为密码,但似乎没有任何效果。
我是否忘记了任何特殊参数或配置?
尝试删除此行以查看更改后收到的错误:
SmtpServer.Credentials = 凭证;
尽量减少您设置的属性数量。我认为您至少需要实例化 smtpclient 和 mailmessage。
最低人数:
SmtpClient smtp = new SmtpClient("smtpserver");
MailMessage mail = new MailMessage();
设置: mail.To mail.From mail.Subject mail.Body
smtp.Send(mail);
如果您将代码放在 try
& catch
块中,将会对您有很大帮助,这样您就可以查看是否有任何异常被抛出。 (试图评论,没有足够的声誉,我的道歉)
我认为在端口 25 上提供用户名和使用 SSL 的组合意味着尝试了身份验证但失败并且尝试了错误的协议协商。如果您按以下方式更改代码,会发生什么情况?
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient();
mail.To.Add(email);
mail.From = new MailAddress("mail@domain.com");
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = message;
SmtpServer.Host = "smtpserver";
SmtpServer.Port = 25;
SmtpServer.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
try {
SmtpServer.Send(mail);
}
catch (Exception ex) {
Debug.WriteLine("Exception Message: " + ex.Message);
if (ex.InnerException != null)
Debug.WriteLine("Exception Inner: " + ex.InnerException);
}
我在这里假设您尝试使用的服务器支持无需身份验证的邮件中继,这应该排除 Internet 上任何合理的配置。