电子邮件发送应用程序与图像在本地机器上

本文关键字:机器 图像 应用程序 电子邮件 | 更新日期: 2023-09-27 18:17:37

我有一个小的电子邮件应用程序,允许用户从复选框中构建消息,然后将消息作为电子邮件发送。我试图添加一个图像的电子邮件,即一个标志或签名。应用程序工作得很好,但当我研究如何将图像发送到电子邮件中时,我发现我应该使用System.Net.Mail而不是Interop。所以我将我的email类更改为下面的代码。现在我收不到邮件了。我假设这是因为代码是为服务器设置的,我只想在本地机器上运行它。这只是我用来帮助我理解一些概念的东西,所以现实生活中的使用不会成为一个因素。我只是想在本地的Outlook电子邮件账户上测试我的小程序。我的代码如下…

using System;
using System.Net.Mail;
using System.Net.Mime;
namespace Email_Notifier  
{
    public class EmailSender:Notification
    {
        string emailRecipient = System.Configuration.ConfigurationManager.AppSettings    ["emailRecipient"];
        public void SendMail(string message)
        {
            try
            {
                string strMailContent = message;
                string fromAddress = "MyApp@gmail.com";
                string toAddress = emailRecipient;
                string contentId = "image1";
                string path = (@"C:Libraries/Pictures/Logo.gif");  
                MailMessage mailMessage = new MailMessage(fromAddress, toAddress);
                mailMessage.Subject = "Email Notification";
                LinkedResource logo = new LinkedResource( path , MediaTypeNames.Image.Gif);
                logo.ContentId = "Logo";
                // HTML formatting for logo
                AlternateView av1 = AlternateView.CreateAlternateViewFromString("<html><body><img src=cid:Logo/><br></body></html>" + strMailContent, null, MediaTypeNames.Text.Html);
                av1.LinkedResources.Add(logo);
                mailMessage.AlternateViews.Add(av1);
                mailMessage.IsBodyHtml = true;
                SmtpClient mailSender = new SmtpClient("localhost"); 
                mailSender.Send(mailMessage);
            }
            catch (Exception e)
            {
                Console.WriteLine("Problem with email execution. Exception caught: ", e);
            }
            return;
        }
    }
}

电子邮件发送应用程序与图像在本地机器上

指定mailSender = new SmtpClient("localhost");

您是否在本地机器上设置了SMTP服务器?如果没有,则需要这样做才能使用SmtpClient。否则,指定localhost以外的主机名,也许使用这里指定的Gmail帐户,记住您需要配置身份验证和SSL。

请参阅SmtpClient的文档。

还有一两个其他的问题,我可以看到你的代码-但让我们处理这些简单的邮件发送工作后。

如果你的问题是你的机器上没有SMTP服务器,你会看到一个异常,而不是默默地没有发送你的电子邮件(我相信这是你所看到的,因为你没有列出一个异常,但不完全确定)。可能是您成功地向本地SMTP服务器发送了邮件,但它未能继续发送邮件。如果你安装了iis smtp服务器,并且你正试图使用它来发送邮件,你可以在C:'Inetpub'mailroot的子目录中看到失败的电子邮件消息。有一个坏邮件子目录,它应该包含失败的投递。

如果你是在Windows 7上,它不支持iis SMTP服务器。在您的机器上设置SMTP服务器的另一种替代方法是http://smtp4dev.codeplex.com/,该服务器实际上并不发送电子邮件,但可以显示任何电子邮件地址的所有发送内容。即使我的操作系统中有iis SMTP服务器可用,出于开发需要,我也更喜欢它。