使用本地计算机上的图像发送邮件发件人应用

时间:2011-12-13 16:08:01

标签: c# visual-studio-2010 image email

我有一个小型电子邮件应用程序,允许用户从复选框构建消息,然后将消息作为电子邮件发送。我正在尝试将图像添加到电子邮件中,即徽标或签名。应用程序工作正常,但当我正在研究将图像放入电子邮件时,我发现我应该使用System.Net.Mail而不是Interop。所以我将我的电子邮件类更改为以下代码。现在我没有收到电子邮件。我假设这是因为代码是为服务器设置的,我只想在我的本地机器上运行它。这只是我正在玩的东西,以帮助我理解一些概念,所以现实世界的使用不会成为一个因素。我只是希望能够在我的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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

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

您是否在本地计算机上设置了SMTP服务器?如果没有,您需要这样做才能使用SmtpClient。否则,请指定localhost以外的主机名,可能使用指定的here Gmail帐户,请注意,您需要将其配置为进行身份验证和SSL。

另请参阅documentation for SmtpClient

我可以在您的代码中看到一两个其他问题 - 但是在让简单的邮件发送工作之后让我们处理这些问题。

答案 1 :(得分:1)

如果您的问题是您没有在计算机上与之通信的smtp服务器,您将看到一个例外而不是默默地没有发送您的电子邮件(我认为这是您所看到的没有列出异常,但不完全确定)。可能是您成功交付到本地smtp服务器,但它无法发送邮件。如果您安装了iis smtp服务器并且这是您尝试用来发送邮件的,则可以在C:\ Inetpub \ mailroot的子目录中看到失败的电子邮件。有一个应该发送失败的badmail子目录。

如果你在Windows 7上,它不支持iis smtp服务器。另一种方法是在您的计算机上安装一个smtp服务器,该服务器实际上不会发送电子邮件,但会向您显示任何电子邮件地址的所有内容http://smtp4dev.codeplex.com/。即使我的操作系统中有iis smtp服务器,我更喜欢这个以满足开发需求。