标签: mailmessage

发送到多个电子邮件地址但只显示一个C#

我在C#中使用SmtpClient,我将发送潜在的100多个电子邮件地址.我不想遍历每一个并向他们发送个人电子邮件.

我知道可以只发送一次消息,但我不希望来自地址的电子邮件显示100个其他电子邮件地址,如下所示:

Bob Hope; Brain Cant; Roger Rabbit;Etc Etc
Run Code Online (Sandbox Code Playgroud)

是否可以一次发送的消息,并确保只有收件人的电子邮件地址会显示在邮件的一部分?

c# smtp system.net.mail mailmessage

5
推荐指数
1
解决办法
5779
查看次数

是否可以在C#中的委托上传递System.Net.Mail.MailMessage对象?

我做了一个小的SmtpSender类来处理发送Smtp MailMessage对象.当消息发送或发送失败时,我引发一个包含"响应"对象的委托,该对象具有用户尝试发送的原始MailMessage以及成功/失败布尔值和错误字符串.然后,用户可以将MailMessage对象重新提交给sender类,以便在需要时再次尝试.

我想知道的是......如果我提出一个包含非托管资源的对象的委托,那么我是否需要在当前范围内处理该对象?如果是这样,在当前作用域中调用Dispose会杀死委托函数接收的对象吗?从长远来看,我担心内存泄漏.

任何建议或帮助将不胜感激.提前致谢!

戴夫

public delegate void SmtpSenderSentEventHandler(object sender, SmtpSendResponse theResponse);

public class SmtpSendResponse : IDisposable
{
    #region Private Members

    private MailMessage _theMessage;
    private bool _isSuccess;
    private string _errorMessage;

    #endregion

    #region Public Properties

    public MailMessage TheMessage
    {
        get { return _theMessage; }
        set { _theMessage = value; }
    }

    public bool IsSuccess
    {
        get { return _isSuccess; }
        set { _isSuccess = value; }
    }

    public string Error
    {
        get { return _errorMessage; }
        set { _errorMessage = value; …
Run Code Online (Sandbox Code Playgroud)

c# memory memory-leaks smtp mailmessage

5
推荐指数
1
解决办法
313
查看次数

构建电子邮件发件人服务

我有几个网络应用程序都利用发送电子邮件,无论是通过联系表格,还是某种通知更新等.

我发现的问题是,没有任何方法可以跟踪从Web应用程序发送的电子邮件,所以我想出了一个可能的解决方案:

图1. 电子邮件发件人服务流程图

这真的很直接 - 而不是让每个Web应用程序自己发送电子邮件,我想通过创建一个中央电子邮件发件人服务来统一该过程.

在基本术语中,每个应用程序只会在数据库的"出站电子邮件"表中使用"收件人","发件人","主题","内容"数据创建一行.

然后,电子邮件发件人服务(Win服务)将从发件箱中选择电子邮件,发送它们,然后标记为已发送.


即使我将"基本电子邮件"信息(来自,来自主题,内容)存储在数据库中,我真正想做的还是存储"MailMessage"对象本身,以便电子邮件发件人服务可以反序列化原始的MailMessage,因为这将允许任何应用程序完全自定义电子邮件.

以这种方式使用MailMessage对象有任何问题吗?

更新:另一个目标是存储已发送的电子邮件日志 - 因此使用数据库的原因.

c# asp.net mailmessage sql-server-2008

5
推荐指数
1
解决办法
3517
查看次数

使用MailMessage在C#中发送电子邮件

我在使用MailMessage发送电子邮件时遇到一些问题.我有两个电子邮件帐户(account1@gmail.com和account2@gmail.com),我希望account2能够通过按钮点击事件向帐户1发送电子邮件.

这就是我所拥有的,但它不起作用.我得到了例外并说这是禁止的.

            try
            {
                //do submit
                MailMessage emailMessage = new MailMessage();
                emailMessage.From = new MailAddress("account2@gmail.com", "Account2");
                emailMessage.To.Add(new MailAddress("account1@gmail.com", "Account1"));
                emailMessage.Subject = "SUBJECT";
                emailMessage.Body = "BODY";
                emailMessage.Priority = MailPriority.Normal;
                SmtpClient MailClient = new SmtpClient("smtp.gmail.com");
                MailClient.Credentials = new System.Net.NetworkCredential("account2@gmail.com", "password");
                MailClient.Send(emailMessage);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
Run Code Online (Sandbox Code Playgroud)

我觉得这是Smtp的一个问题,但我不知道.

c# mailmessage

5
推荐指数
1
解决办法
1万
查看次数

传送到分拣目录时的.NET 4.5 SMTP客户端点填充问题

希望有人能够帮助解决这个问题,我一直在寻找,我似乎无法在任何地方找到答案.

我正在创建一个邮件消息,将其传递到指定的拾取目录,此代码在过去已经多次使用而没有问题.现在,当我检查生成的文件,更具体地说是在eml文件中检查URL时,我可以看到中间有一个double ..根据我一直在阅读的内容,据我所知,如果消息中第一行的第一个字符开头,这是SMTP协议的一部分..此文件稍后将被另一项服务接收,该服务将最终执行电子邮件的发送.

我打电话时,我已经能够将它缩小到确切的线client.Send().如果我在发送之前检查邮件正文,则表明URL已正确形成.在我调用它之后检查消息体,..URL中存在该消息.

我的问题或问题如下:

  1. 有没有其他人在使用时遇到点填充问题SmtpDeliveryMethod.SpecifiedPickupDirectory
  2. 谁能正确处理这个问题呢?.NET SMTP或辅助服务,以便在以后选择此消息并将其发送到最终目标?
  3. 关于如何解决这个问题的任何建议?

我以前尝试过这里描述方法,但它失败了,有很多例外.

我主要是想找到一种方法将这个eml文件保存到磁盘上的一个位置,以后可以将其重新拾取并发送,我对C#的了解仍然相当有限,所以我可能会看到一些简单的东西,所以任何建议或指导将非常感谢!

我已经创建了一小段代码来尝试重新创建问题,这不是我正在使用的确切内容,但它确实显示通过client.Send()方法发送后,有2'.. '在字符串的开头.

using (var client = new SmtpClient())
{
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
client.PickupDirectoryLocation = @"C:\temp";
var message = new MailMessage();
message.To.Add(new MailAddress("alice@a.com"));
message.From = new MailAddress("bob@b.com");
message.Subject = "Smtp Dot Stuffing Test";
message.Body = ".A.B.C..... .0.1.2.3.4.5.6.7.8.9";
client.Send(message);
}
Run Code Online (Sandbox Code Playgroud)

c# smtp smtpclient mailmessage

5
推荐指数
1
解决办法
652
查看次数

链接的资源不是内嵌图像C#

我在下面写了代码,将图像嵌入到从我的c#代码发送的邮件中.但是当我检查邮件时,我得到的图像就像附件而不是内嵌图像.(如Gmail)

AlternateView htmlBodyView = null;

string htmlBody = "<html><body><h1></h1><br><img src=\"cid:SampleImage\"></body></html>";

AlternateView plainTextView = AlternateView.CreateAlternateViewFromString(htmlBody, null, "text/html");

ImageConverter ic = new ImageConverter();
Byte[] ba = (Byte[])ic.ConvertTo(bitmap_obj, typeof(Byte[]));
using (MemoryStream logo = new MemoryStream(ba))
{
    LinkedResource sampleImage = new LinkedResource(logo, "image/jpeg");
    sampleImage.ContentId = "sampleImage";

    htmlBodyView.LinkedResources.Add(sampleImage);

    p.SendEmail(htmlBodyView);
}
Run Code Online (Sandbox Code Playgroud)

c# mailmessage

5
推荐指数
1
解决办法
889
查看次数

HTML电子邮件无法正确显示

我在c#中发送HTML邮件时遇到一个奇怪的问题.

基本上我每天早上都想给自己发送电子邮件,然后我开始从ftp网站下载HTML标记中的天气.

获取源文件后,我将其读入字符串并使用以下代码创建mailMessage.

string body = File.ReadAllText(@"C:\Weather.htm");

MailMessage mailMessage = new MailMessage();
SmtpClient mailClient = new SmtpClient("smtp.gmail.com");

mailClient.Credentials = new NetworkCredential(username, password);
mailClient.Port = 587;
mailClient.EnableSsl = true;
mailMessage.From = new MailAddress(emailFrom);
mailMessage.IsBodyHtml = true;    
mailMessage.To.Add(emailTo);
mailMessage.Subject = "Test Email";
mailMessage.SubjectEncoding = System.Text.Encoding.Unicode;
mailMessage.Body = body;
mailMessage.BodyEncoding = System.Text.Encoding.Unicode;
mailClient.Send(mailMessage);
Run Code Online (Sandbox Code Playgroud)

问题是,当电子邮件以HTML格式到达时,所有DIV/CSS都不受尊重,看起来很奇怪.我试图通过电子邮件发送到不同的电子邮件地址和客户端,它看起来和尝试不同的编码一样.

因此,某些地方出现了问题.

有谁知道如何解决这个问题并获得格式正确的电子邮件?

好的形象

替代文字

BadImage

替代文字

源标记

<html xmlns="http://www.w3.org/1999/xhtml"><head xmlns="">
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Sydney Forecast</title>
        <link rel="stylesheet" type="text/css" href="http://www.bom.gov.au/watl/standard/common.css">
        <link rel="stylesheet" type="text/css" href="http://www.bom.gov.au/weather-services/styles/text-gfe.css">
    </head>
    <body>
        <div class="product">
            <p xmlns="" class="p-id">IDN10064</p> …
Run Code Online (Sandbox Code Playgroud)

html css c# markup mailmessage

4
推荐指数
2
解决办法
9865
查看次数

在C#中发送带附件的邮件

我需要发送一封邮件,包括例外情况(黄色死亡屏幕)作为附件.

我可以得到YSOD如下:

string YSODmarkup = lastErrorWrapper.GetHtmlErrorMessage();
if (!string.IsNullOrEmpty(YSODmarkup))
{
    Attachment YSOD = Attachment.CreateAttachmentFromString(YSODmarkup, "YSOD.htm");
    mm.Attachments.Add(YSOD);
}
Run Code Online (Sandbox Code Playgroud)

mm是类型MailMessage,但不发送邮件.

这里

System.Net.Mail.MailMessage MyMailMessage = new System.Net.Mail.MailMessage("from", "to", "Exception-Details", htmlEmail.ToString());
Run Code Online (Sandbox Code Playgroud)

用于绑定邮件正文.

在此之后,仅添加附件.删除附件时,会发送邮件.

谁能帮我吗?


根据阿尔宾先生和保罗先生的评论,我正在更新以下内容

        string YSODmarkup = Ex_Details.GetHtmlErrorMessage();
        string p = System.IO.Directory.GetCurrentDirectory();
        p = p + "\\trial.txt";
        StreamWriter sw = new StreamWriter(p);
        sw.WriteLine(YSODmarkup);
        sw.Close();
        Attachment a = new Attachment(p);       

        if (!string.IsNullOrEmpty(YSODmarkup))
        {
             Attachment  YSOD = Attachment.CreateAttachmentFromString(YSODmarkup, "YSOD.html");
            System.Net.Mail.Attachment(server.mappath("C:\\Documents and Settings\\user\\Desktop\\xml.docx"));

             MyMailMessage.Attachments.Add(a);

        }  
Run Code Online (Sandbox Code Playgroud)

在这里,我将内容附加到文本文件并尝试相同.所以邮件没有发送.发送包含HTML标签的邮件是否有任何问题.因为我能够附加普通的文本文件.

.net c# email mailmessage

4
推荐指数
1
解决办法
1万
查看次数

在MVC中生成没有控制器的视图?

我的应用程序分为三层:

  1. 查看(MVC)
  2. 业务逻辑(服务)
  3. 数据(LINQ/SQL)

在我的服务层中,我调用了一个EmailSender服务,该服务目前通过SmtpClient和MailMessage发送明文电子邮件.据我所知,相当标准的东西.

我现在正在尝试使用Razor模板格式化这些电子邮件的主体,该模板接受MailMessage作为模型,并生成一些HTML,我可以将其粘贴到邮件正文中.

现在这就是我所拥有的:

public void SendAsyncEmail(MailMessage message)
        {
            message.IsBodyHtml = true;

            message.body = {generate html string from body here using razor?}

            // Async code here
        }
Run Code Online (Sandbox Code Playgroud)

假设我定义了一个这样的剃刀视图:

@model System.Net.Mail.MailMessage

<div>
    <h1>@Model.Subject</h1>
    <p>@Model.Body</p>
</div>
Run Code Online (Sandbox Code Playgroud)

如何从我的服务方法将MailMessage传递到此视图中,并为其生成电子邮件正文的字符串?

asp.net-mvc mailmessage asp.net-mvc-3 asp.net-mvc-4

4
推荐指数
1
解决办法
3959
查看次数

MailMessage - 打开附件时出错

我正在使用NPOI创建一个excel工作簿并尝试将其作为附件发送到电子邮件中.我的代码如下:

var wb = new HSSFWorkbook();

//create the workbook

using(var ms = new MemoryStream())
{
    wb.Write(ms);
    var msg = new MailMessage();

    //create email

    msg.Attachments.Add(new Attachment(ms, "Document.xls", "application/vnd.ms-excel"));

    client.Send(msg);
}
Run Code Online (Sandbox Code Playgroud)

我已经排除了创建工作簿的代码,我已经测试以确保它可以工作(我能够保存文件并打开它而不会出现问题)但是如果你想看到任何东西请问.client只是我的SmtpClient.

电子邮件发送没有问题,附件以Document.xls(如预期的那样)出现,但是当我打开它时,我收到以下消息(在Excel 2010中),当我单击"是"打开时,工作表为空.

The file you are trying to open, 'Document.xls', is in a differrent format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now? …

c# mailmessage npoi

4
推荐指数
1
解决办法
1216
查看次数