我如何使用多线程发送MailMessages?
我希望你们会因为我完全缺乏方向而忍受我. 我必须实现邮件队列处理系统,在该系统中我必须通过Windows服务在数据库中发送排队的电子邮件. 它不是生产者消费者模式.我一次说10行分为数据. 该数据词包含序列化mailMessage对象和SMTP发送详细信息.如果我必须使用固定数量的线程(例如6个线程),现在我该如何从线程中的数据表中获取一行,然后发送邮件,然后再次返回以查看是否还有其他行? 任何实现此操作的简单逻辑都将在C#中使用一个简单的示例. 中的一个简单示例 我正在使用.NET 3.5 解决方案 由于发送电子邮件是一个I/O的界限过程,因此发送电子邮件的产卵线程不会取得太多(如果有)加速. 如果您使用的是Windows的一部分的SMTP服务器,则当您"发送"电子邮件时,它实际上并未在该瞬间发送.它位于服务器上的队列中,服务器尽可能快地发送它们.发送电子邮件实际上是一个缓慢的过程. 我想我说的是有两个选择: 只需顺序发送它们,看看是否符合您的性能
2 2024-01-07
编程技术问答社区
如何使用System.Net.Mail.MaiMessage防止HTML邮件在发送时出现带引号的打印。
I am attempting to send an email to a gmail address using C# VS2012 .NET 4.5 System.Net.Mail.MailMessage. 电子邮件发送但总是有: Content-Transfer-Encoding: quoted-printable 当我在邮件客户端(Gmail Web邮件客户端)中查看电子邮件源时. 我尝试了我能想到的每种不同的组合,以及bodytransferenconding and veliverformat等...但是没有什么能摆脱这种引用的印刷. 问题是CSS在电子邮件中不起作用. HTML渲染还可以,但应用CSS,当我查看电子邮件源时,我看到它在所有=符号后都插入了3D,这阻止了我的CSS工作.
6 2024-01-06
编程技术问答社区
如何打开带有附件的默认电子邮件客户端
我正在处理我的项目问题,即当我单击按钮时,默认的电子邮件客户端应弹出,如果有附件,则应将其自动连接到默认的电子邮件客户端. 我已经尝试了很多方法.首先,我使用了MAPI,但是MAPI也无法检测到我的默认电子邮件客户端,即使我已经在控制面板中设置了它,它也显示了这两个消息框 我已经在互联网上搜索了这些错误,但是对我没有明确的答案. 这是我在Mapi中使用的代码. 我还使用了mail:to协议来调用默认电子邮件客户端,该默认电子邮件客户端使用使用此行代码来处理上述协议. Dim proc As System.Diagnostics.Process = New System.Diagnostics.Process() Dim filename = Convert.toChar(34) & "C:\USERS\JOSHUA~1.HER\DOWNLO~1\ASDPOR~1.PDF" & Convert.toChar(34)
4 2024-01-06
编程技术问答社区
重音字符不显示
我有一个要求将电子邮件发送给用户的要求,他可以直接回复电子邮件,并且该电子邮件的内容发布在他的帐户中. 问题是重音字符在用户从电子邮件中发布内容时无法正确显示.我使用MailMessage类发送电子邮件: message.BodyEncoding = Encoding.UTF8; message.SubjectEncoding = Encoding.UTF8; 您可以看到身体和受试者均为UTF8编码.但是,当我从电子邮件中发布消息时,口音会转换为?.有人可以告诉我我想念什么吗? 编辑:这与IsBodyHtml有任何关系吗?我还没有将IsBodyHtml设置为true.这是需要的吗? 解决方案 i似乎是,尽管使用UTF8编码用于人体的默认媒体类型是文本/平原 - 即ASCII(即 ascii 字符集).如果您使用IsBodyHtml,它将使用媒体类型的文本/html,该文本/html将使用
2 2024-01-05
编程技术问答社区
.NET SmtpClient。有什么方法可以确保在发送MailMessage之前解决所有的邮件?
我正在使用smtpclient将电子邮件发送给多个收件人.当员工离开公司时,他们的电子邮件地址变得无效.由于他们的电子邮件地址保留在我们的数据库中,直到手动删除,因此试图向他们发送电子邮件会导致我们的应用程序在SmtpClient.Send(MailMessage)期间抛出例外.但是,尽管抛出了例外,但它仍然发送电子邮件.这是一个问题,因为我们想通过阻止用户保存记录的尝试并显示一条友好的消息来处理此错误,并建议从数据库中删除任何无效的联合. 如果有一种迭代所有配方以确保它们都有效的方法,我们可以防止所有电子邮件发送直到用户满足一组条件. 解决方案 这是一个非常古老的问题,我不知道您是否已解决. 按照msdn: http://msdn .microsoft.com/en-us/library/swas0fwc(v = vs.100).aspx 使用发送发送发送给多个收件人和SMTP 服务器接受某些收件人有效并拒绝其他收件人, send 发送 通过电子邮件发送给被接
4 2024-01-05
编程技术问答社区
有没有可能捕捉到用SmtpClient发送的电子邮件的 "Message-ID"?
使用 SmtpClient SmtpClient and hmailserver ),我目前没有找到>已发送消息的标题值. 背后的想法 我正在尝试通过编程方式跟踪无法交付的消息,因此我必须找到一种方法来识别拒绝某个消息的目标SMTP服务器的答复. 现在,我想到了此ID的Message-ID SMTP标头值和解析邮件. 我已经尝试检查 我的问题 是否可以在发送MailMessage实例时获得Message-ID标头值? ? 更新2012-05-27 按此示例我在发送之前,我已经成功地尝试了自己手动生成Message-ID. 我所有的示例都迄今为止工作了,所以似乎这是我问题的解决方案. 解决方案 问题的标准解决方案是VERP.阅读伯恩斯坦的原始文章,以了解为什么Message-Id等.不可靠. http://cr.yp.to/proto/proto/verp.txt 其他解决方案 您可以在发送电子邮件之前添加自己的消息ID.我使用
18 2024-01-05
编程技术问答社区
MailMessage 附件文件名带重音
我正在尝试发送带有Excel文件名的HTML电子邮件.一切都很好地效果很好,直到我发送了其附件名称包含重音字母的消息:--(我尝试过的每个解决方法都失败了. 原始代码: var attachment = new Attachment( new MemoryStream(excelFileContents), "simplefilename.xls"); 这个工作正常. 但是,如果我用"échec.xls"替换" SimpleFileName.xls",则附件是垃圾(名称和内容). 我尝试了这些,无济于事: var attachment = new Attachment( new MemoryStream(excelFileContents), new System.Net.Mime.ContentType("application/vnd.ms-excel")); attachment.Nam
2 2024-01-05
编程技术问答社区
将一个文件附加到一个iCalendar上
我有iCalendar会议请求通过SMTP正确发送(使用下面的代码),但是当我尝试附加文件时,该文件并未作为iCalendar的一部分出现.在Outlook打开它后保存.ICS时,整个文件数据已被删除. 这是我正在使用的代码: System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); msg.From = new System.Net.Mail.MailAddress("test1@test.com", "test1"); msg.To.Add(new System.Net.Mail.MailAddress("test2@test.com", "test2")); msg.Subject = "Subject1"; msg.Body = "Body line 1\r\nBody line 2\r\nBody line 3"; System.Net.Mime.ContentType ct = ne
2 2024-01-04
编程技术问答社区
将MIME树转换为MailMessage
我正在编写一个处理和转发电子邮件的C#程序.我有一个pop3库和一个模仿解析器,我需要将哑剧树复制到System.Net.Mail.MailMessage. . 将不同的Mime零件映射到AlternateView s,LinkedResource s和Attachment s? 的最佳方法是什么 edit :将与所有邮件客户端(发送和接收) 解决方案 现在,我正在使用不是inline的Content-Disposition复制任何内容,或者除文本或图像以外的任何其他方法,以Attachment,Attachment,inline ,或在HTML视图或最后一个视图上Image的MIME类别Image的任何类别,以及其他任何内容AlternateView. (我还没有测试过) 其他解决方案 从10,000英尺概述中,这是我要做的. 将您的哑光部分弄平到树上.确保每个零件都包含1个,只有1个部分(不是像多部分/相关的父母,或类似的东西). 检查身体的以下条
8 2024-01-04
编程技术问答社区
保存System.Net.mail.MailMessage为.msg文件
我正在构建一个应用程序,我有义务创建mailMessage(system.net.mail.mailmessage),并将其保存在磁盘上,为.msg扩展. 以下是我使用的方法将mailMessage保存为.msg文件: public static void Save(MailMessage Message, string FileName) { Assembly assembly = typeof(SmtpClient).Assembly; Type _mailWriterType = assembly.GetType("System.Net.Mail.MailWriter"); using (FileStream _fileStream = new FileStream(FileName, FileMode.Create)) {
12 2024-01-04
编程技术问答社区
MailAddress构造函数中的多个地址
我试图添加多个地址. MailAddress mailAddressTo = new MailAddress("sample@example.com;sample1@example.com","Vetrivelmp"); 但抛出错误 An invalid character was found in the mail header: ';' 解决方案 您不能使用MailAddress构造函数来指定多个收据,但是您可以使用如下所示的MailMessage对象. 使用MailMessage(不是 MailAddress)构造函数: var msg = new MailMessage("from@domain.example", "to1@gmail.com, to2@gmail.com"); 另一种方法是: MailMessage mail = new MailMessage(); mail.To.Add("me@mycompany.example
6 2024-01-03
编程技术问答社区
无法在asp.net中发送mailmessage
以下代码无法向客户发送电子邮件,并且不会引发任何例外.该代码不会发送任何电子邮件或异常,而是执行.我是关于ASP.NET的全新.有人可以帮助我如何解决问题. 代码: try { String userName = "ramesh"; String passWord = "123456"; String sendr = "ramesh@gmail.com"; String recer = "customer@yahoo.com"; String subject = "Comformation "; String body = "Dear Customer"; MailMessage msgMail = new MailMessage(sendr, recer, subject, body); int PortNumber = 25; SmtpClient smtp = new SmtpClient("s
2 2024-01-03
编程技术问答社区
如何通过MailMessage将电子邮件发送给多个收件人
我有多个存储在SQL Server中的电子邮件收件人.当我单击发送网页时,应该将电子邮件发送给所有收件人.我已经使用;. 分开电子邮件 以下是单个收件人代码,它有效: MailMessage Msg = new MailMessage(); MailAddress fromMail = new MailAddress(fromEmail); Msg.From = fromMail; Msg.To.Add(new MailAddress(toEmail)); if (ccEmail != "" && bccEmail != "") { Msg.CC.Add(new MailAddress(ccEmail)); Msg.Bcc.Add(new MailAddress(bccEmail)); } SmtpClient a = new SmtpClient("smtp server name"); a.Send(Msg); sreader.Dispose();
8 2024-01-03
编程技术问答社区
如何将MailMessage对象保存为*.eml或*.msg文件到磁盘上
如何将MailMessage对象保存到磁盘上? MailMessage对象不会公开任何保存()方法. 如果以任何格式保存, *.eml或 *.msg,我就没有问题.有什么想法怎么做? 解决方案 为简单起见,我只是引用连接项目: 您实际上可以配置 smtpclient将电子邮件发送到文件 系统而不是网络.你可以 使用 以下代码: SmtpClient client = new SmtpClient("mysmtphost"); client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; client.PickupDirectoryLocation = @"C:\somedirectory"; client.Send(message); 您也可以在您的 应用程序配置文件如 这个:
2 2024-01-02
编程技术问答社区
C# 从流中压缩和压缩csv
我有一个内存,可以从数据表中汲取数据.当前,这将输入邮件附件,并邮寄邮件附加的CSV.我需要做的是压缩和拉链. 现在,我正在迭代数据的每一行,添加适当的逗号并将其流式传输.它导致带有数据的.bin文件.通过将名称添加为附件参数,它将作为有效的CSV文件发送给客户端. mail.Attachments.Add(new Attachment(stream, "report.csv")); 任何人都可以在将其添加为附件之前如何帮助我如何压缩和拉链CSV?最好是没有外部库.谢谢. 解决方案 对于以前的答案,使用这样的模型, public FileModel(){ public string FileName {get;set;} public Stream FileStream {get;set;} } 定义了以下扩展方法以创建邮编归档. public static class ZipArchiveExtensions {
2 2023-12-26
编程技术问答社区
如何从Windows Phone 8应用程序中发送电子邮件?
在Windows表单项目中,我使用了SMTPClient和MailMessage类,以通过电子邮件发送信息. Windows Phone 8? 是否有等效的 解决方案 您可以使用Microsoft.Phone.Tasks.EmailComposeTask使用内置邮件客户端撰写电子邮件: var task = new EmailComposeTask {To = email}; task.Show(); 或者,您可以将数据发布到第三方服务,例如SendGrid通过API发送电子邮件. Windows Phone上没有 SMTP API. 其他解决方案 这真的很简单!这是从首先,您应该添加: using Microsoft.Phone.Tasks; 到您的代码,然后为个性化并转到邮件应用程序添加以下内容: EmailComposeTask emailComposeTask = new EmailComposeTask
4 2023-12-08
编程技术问答社区
序列化一个FileStream用于传输
另请参阅此问题:我可以将System.Net.MailMessage传递到WCF服务? 我想将附件添加到发送的邮件中.附件是本地光盘上的文件,或者是动态创建的流. WCF合同可以包含流,但仅当所有参数均为类型流时.那么,将一个或多个附件传递给WCF服务的最佳方法是什么? 解决方案 好吧,我自己解决了这个问题.这里的诀窍是将附件转换为base64编码字符串,与电子邮件系统这样做的方式几乎相同.我创建了一个班级来处理这一点.在这里发布给其他人: [DataContract] public class EncodedAttachment { [DataMember(IsRequired=true)] public string Base64Attachment; [DataMember(IsRequired = true)] public string Name; ///
4 2023-11-27
编程技术问答社区
我可以将System.Net.MailMessage传递给WCF服务吗?
我想设置WCF服务来发送电子邮件. system.net.mailmessage似乎是不可序列化的,不能在[DataContract] 中传递 我收到的错误是 键入'System.net.mail.mailaddress' 不能序列化.考虑标记 它与datacontractattribute 有什么建议? 解决方案 无论您将任何传递给WCF服务的服务都必须是XML或二进制序列化. "经典"消息传递方法是: 创建一个具有MailMessage所有必需属性的简单数据合同类 在调用服务之前,请在Datacontract类的新实例中设置MailMessage的所有属性 致电服务,通过数据合同 在服务内部,创建一个新的邮件实例并将属性分配到其中,然后发送
6 2023-11-27
编程技术问答社区
发送到多个电子邮件地址,但只显示一个C#的信息
我正在使用C#中的SMTPClient,我将发送到可能的100封电子邮件地址.我不想循环浏览每个人并向他们发送一个单独的电子邮件. 我知道只能发送一次消息,但我不希望从地址上的电子邮件显示这样的100个其他电子邮件地址: Bob Hope; Brain Cant; Roger Rabbit;Etc Etc 是否可以发送一次消息,并确保仅收件人的电子邮件地址显示在电子邮件的一部分中的中? ? 解决方案 听说过BCC(盲碳副本)吗? :) 如果您可以确保您的SMTP客户端可以将地址添加为BCC,则您的问题将被解决:) MailMessage类中似乎有一个盲目的碳复制项目 http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.aspx http://mmsdn.microsoft. com/en-us/library/system.net.mail.mailmes
20 2023-09-05
编程技术问答社区
当使用德语umlauts和名字中的逗号时,错误地显示电子邮件接收器
使用using (var message = new MailMessage()) { message.From = new MailAddress(@"uwe.keim@gmail.com", "Uwe Keim"); message.Bcc.Add(new MailAddress(@"uk@zeta-software.de", "Uwe Keim")); // This fails (see screenshot). /*1*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Müller, Fred")); // This succeeds. /*2*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Fred Müller")); // This also succeeds. /*3*/ message.To.Add(new MailAddress(@"uk2@zeta
4 2023-09-05
编程技术问答社区