C# 使用.NET发送电子邮件-不那么容易

C# 使用.NET发送电子邮件-不那么容易,c#,windows,winforms,email,send,C#,Windows,Winforms,Email,Send,大约一年来,我一直无法使用Visual C以编程方式发送和接收电子邮件。我在网上找到的数百个例子中,没有一个是有效的。不,我不只是复制和粘贴。我研究代码,并根据需要修改/添加/删除 有人能帮我解决这个问题吗。我正在努力完成我去年开始制作的一个简单的程序,而事实证明,这几乎是我无法理解的 我真的不知道该怎么办了。文档没有提供任何有用的信息给我,因为它们都不起作用。我已经将示例代码提供给其他人使用,它对他们有效——但对我无效!这是怎么回事 我不知道发送邮件是否取决于我的计算机是否具有安全/防火墙设置

大约一年来,我一直无法使用Visual C以编程方式发送和接收电子邮件。我在网上找到的数百个例子中,没有一个是有效的。不,我不只是复制和粘贴。我研究代码,并根据需要修改/添加/删除

有人能帮我解决这个问题吗。我正在努力完成我去年开始制作的一个简单的程序,而事实证明,这几乎是我无法理解的

我真的不知道该怎么办了。文档没有提供任何有用的信息给我,因为它们都不起作用。我已经将示例代码提供给其他人使用,它对他们有效——但对我无效!这是怎么回事

我不知道发送邮件是否取决于我的计算机是否具有安全/防火墙设置。但为了以防万一,我甚至暂时完全关闭了所有安全和防火墙设置,只是为了看看它是否会发送电子邮件

我没有它的代码了,因为我刚刚开始尝试再次做这件事,如果有人能帮助我工作,我会非常感激

所以,我想做的就是:

创建一个包含两个按钮和一个文本框的简单表单。(当然,完成了)
按钮1
检查电子邮件(但仅在消息框中显示主题和发件人,不下载消息)
按钮2
将文本框1的内容发送到“
username@bluebottle.com

我的服务器设置是:

Username    username@bluebottle.com
Password    ***********
IMAP/POP Server (Incoming):     mail.bluebottle.com
SMTP Server     (Outgoing):     mail.bluebottle.com

SMTP should be port 25, 26 or 587
POP3 should be port 110, using SSL 995
IMAP should be port 143, using SSL 993


感谢您抽出时间阅读。如果我没有解释清楚,请说清楚,我会尽量让你明白。自今年以来,Microsoft向所有Hotmail用户提供了pop3和SMTP支持

  • POP3服务器:POP3.live.com(端口995)
  • SMTP服务器:SMTP.live.com(端口25) {注意:如果端口25在中被阻塞 通过您的网络或ISP,您可以 使用TLS或SSL将SMTP端口设置为587 加密取决于中的客户端 使用}
更多信息:
没关系。我只是自己想出来的。这是一个简单的123!还是ABC?我忘了怎么回事了。无论如何,如果有人感兴趣或需要知道如何用C#发送电子邮件,这就是我的工作:

string Sender     = "username@domain.com";

string Username   = "username";
string Password   = "********";

string Recipient  = "username@domain.com";

string Subject    = "Enter subject here.";
string Message    = "Enter message here.";

string Host       = "mail.server.com";
int Port          = 26;

using(MailMessage Mail = 
      new MailMessage(
      Sender,
      Recipient))
using (SmtpClient SmtpMail =
       new SmtpClient(
       Host,
       Port))
{
  Mail.Subject = Subject;
  Mail.Body    = Message;

  SmtpMail.EnableSsl = true;

  SmtpMail.Credentials =
        new System.Net.NetworkCredential(
        Username,
        Password);

  SmtpMail.Send(Mail);
}

请注意,需要在文件顶部声明以下指令:

using System.Net.Mail;

编辑:使用模式docos:

代码示例很好,但请使用使用模式,而不是手动处理邮件对象。感谢Jesse Weigert的建议。我可以问一下,为什么我们需要使用using模式而不是手动处理对象?这只是个人喜好吗?绩效相关?还有别的吗?我现在在看MSDN,即使出现异常,你也应该注意处理。这可以通过将dispose放在finally块中来实现,或者作为语法糖,在using块中完成全部工作,这将生成与try{…}finally{Mail.dispose();}相同的IL代码“它保证无论发生什么情况都会调用dispose…即使using语句体中抛出异常”谢谢你的回答Rohancargg:)我认为这与问题无关,因为整个问题在10月份已经改变了。