无法发送邮件。这是我的C#
来源:
var to = "me@mycompany.com";
var subject = "test";
var body = "test mail";
var message = new MailMessage(from, to, subject, body);
var client = new SmtpClient { Credentials = new NetworkCredential("me@mycompany.com", "mypassword") };
client.Send(message);
这是App.config
:
<system.net>
<mailSettings>
<smtp from="me@mycompany.com">
<network
host="mail.mycompany.com"
port="25"
userName="me@mycompany.com"
password="mypassword"
/>
</smtp>
</mailSettings>
</system.net>
到目前为止,如果App.config
中的主机/端口错误,则抛出异常,但如果用户/传递错误则不会(显而易见的安全原因)。但是,我已成功使用与源中相同的用户/传递从Microsof Outlook登录。
Inbox
文件夹中既未收到电子邮件,也未收到Junk
的电子邮件。如何验证服务器端(考虑到它是microsoftonline.com的一部分)?我错过了什么?我做错了什么,拜托?
答案 0 :(得分:2)
我很确定如果服务器因任何原因拒绝电子邮件,您的代码会抛出异常。如果不是那么意味着服务器正在接受带有提供的用户名和密码的电子邮件,并且技术上邮件正在“成功发送”。但是,这并不保证任何人都会收到任何电子邮件。您需要了解电子邮件服务器对这些电子邮件的处理方式以及原因。
答案 1 :(得分:2)
下面的链接有一个非常简单的发送电子邮件功能的示例,可以从控制台应用程序调用以进行测试。我知道这段代码有效,所以它可以隔离你的代码的任何问题,也许可以更清楚地说明问题所在。
答案 2 :(得分:1)
我在尝试使用smtp时遇到了防火墙问题。如果您不想使用IT并且安装了Outlook,那么这是一种解决方法。此方法将使用您的默认电子邮件发送。您还需要添加一个引用(我在COM'Microsoft Outlook 14.0对象库'下使用)
using Outlook = Microsoft.Office.Interop.Outlook;
private void sendEmail(string DistributionList, string AttachmentDestination)
{
//new outlook instance
Outlook.Application app = new Outlook.Application();
//new mail object
Outlook.MailItem mail = app.CreateItem(Outlook.OlItemType.olMailItem);
mail.Subject = "This is coming from a C# script";
mail.To = DistributionList; //your distribution list "email@something.com"
mail.Body = "This is the body of an email from a C# script";
mail.Attachments.Add(AttachmentDestination); //location of attachment (can be ommitted)
mail.Send();
app.Quit();
}
答案 3 :(得分:-2)
得到了IT团队的答复 - 这是一个配置/安全问题。解决了IT问题。非常感谢大家。