电子邮件发送应用程序与图像在本地机器上
本文关键字:机器 图像 应用程序 电子邮件 | 更新日期: 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服务器可用,出于开发需要,我也更喜欢它。