【问题标题】:Send E-mail using .NET - Not so easy使用 .NET 发送电子邮件 - 没那么容易
【发布时间】:2010-11-26 19:34:12
【问题描述】:

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

有人可以帮我解决这个问题吗?我正在努力完成我去年开始制作的本应是一个简单的程序,但事实证明我几乎不可能弄清楚。

老实说,我真的不知道该怎么办了。该文档没有为我提供任何有用的信息,因为它们都没有奏效。我已将示例代码提供给其他人使用,它适用于他们 - 但不适用于我!它是如何工作的?

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

我没有代码了,因为我才刚刚开始尝试再次做这件事,如果有人能帮助我完成这项工作,我将不胜感激。

所以,我要做的就是:

创建一个带有 2 个按钮和一个文本框的简单表单。 (完成,当然) button1 检查电子邮件(但仅在消息框中显示主题和发件人,不下载消息) button2 将 textBox1 的内容发送到“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


感谢您花时间阅读。如果我没有清楚地解释任何事情,请这样说,我会尽力为您解释清楚。

【问题讨论】:

    标签: c# windows winforms email send


    【解决方案1】:

    没关系。我只是为自己想通了。很简单,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 指令需要在文档顶部声明:
    using System.Net.Mail;
    

    编辑:使用模式文档:http://msdn.microsoft.com/en-us/library/yh598w02(VS.71).aspx

    【讨论】:

    • 代码示例很好,但请使用 using 模式,而不是手动处理邮件对象。
    • 感谢杰西·韦格特的建议。请问,为什么我们需要使用 using 模式而不是手动处理对象?只是个人喜好吗?性能相关?还有什么?我现在在看 MSDN
    • 即使出现异常,您也应该小心处理。这可以通过将 dispose 放在 finally 块中来完成,或者 - 作为语法糖 - 在 using 块中执行所有内容,这会生成与 try { ... } finally { Mail.Dispose(); 相同的 IL 代码。 }
    • “它保证无论发生什么都会调用 Dispose...即使在 using 语句的主体内抛出异常”
    • 感谢您的回答 Rohancargg :)
    【解决方案2】:

    自今年以来,Microsoft 为所有 Hotmail 用户提供 pop3 和 SMTP 支持。

    • POP3 服务器:pop3.live.com(端口 995)
    • SMTP 服务器:smtp.live.com(端口 25) {注意:如果端口 25 已被阻止 您的网络或您的 ISP,您可以 使用 TLS 或 SSL 将 SMTP 端口设置为 587 加密取决于客户端 使用}

    更多信息: http://windowslivehelp.com/solutions/settings/archive/2009/01/06/send-and-receive-windows-live-hotmail-emails-from-a-mail-client.aspx

    【讨论】:

    • 我认为这与问题无关
    • 那是因为整个问题已经在 10 月份更改了。
    猜你喜欢
    • 2014-05-30
    • 2015-10-13
    • 2011-05-18
    • 2014-10-11
    • 2012-03-22
    • 2020-03-02
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多