我有一个小型电子邮件应用程序,允许用户从复选框构建消息,然后将消息作为电子邮件发送。我正在尝试将图像添加到电子邮件中,即徽标或签名。应用程序工作正常,但当我正在研究将图像放入电子邮件时,我发现我应该使用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;
}
}
}
答案 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服务器,我更喜欢这个以满足开发需求。