我必须使用C#发送邮件。我正确地遵循每一步,但我无法使用下面的代码发送邮件。有人可以帮我解决这个问题吗?我知道这是一个老问题,我在该网站上阅读了有关它的所有相关文章。但我无法解决我的问题。所以请帮我解决这个问题。错误是:Failure sending mail
。我使用System.Net.Mail
来完成它。
using System.Net.Mail;
string mailTo = emailTextBox.Text;
string messageFrom = "riad@abc.com";
string mailSubject = subjectTextBox.Text;
string messageBody = messageRichTextBox.Text;
string smtpAddress = "mail.abc.com";
int smtpPort = 25;
string accountName = "riad@abc.com";
string accountPassword = "123";
MailMessage message = new MailMessage(messageFrom, mailTo);
message.Subject = mailSubject;
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.Body = messageBody;
message.BodyEncoding = System.Text.Encoding.UTF8;
SmtpClient objSmtp = new SmtpClient(smtpAddress, smtpPort);
objSmtp.UseDefaultCredentials = false;
NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential(accountName, accountPassword);
objSmtp.Credentials = basicAuthenticationInfo;
objSmtp.Send(message);
MessageBox.Show("Mail send properly");
答案 0 :(得分:2)
如果目标邮件服务器是IIS SMTP(或任何其他)服务器,那么您必须检查该服务器上的中继限制。
通常,您必须将邮件服务器配置为接受来自计算机名称(如果在Active Directory中)或IP地址的传入中继。或者,或者你可以使它成为一个公开的中继 - 但如果它是一个公共邮件服务器,那么不推荐这样做,因为你会让垃圾邮件发送者立即通过它进行中继。
您也可以将服务器配置为接受来自特定身份的中继邮件 - 如果这是网站代码,则意味着您很可能必须将该网站配置为以域用户身份运行,以便NetworkCredentials正确发送。
答案 1 :(得分:1)
我只使用了端口26.现在邮件正在正常发送。
int smtpPort = 26;
无论如何,多亏了Zoltan
里亚德。