Tag: email

如何使用System.Net.Mail为电子邮件添加附件?

我有一个表示为byte []的excel文档,我想将其作为附件发送到电子邮件中。 我在构建附件时遇到了一些麻烦。 我可以创建一个具有以下构造函数的Attachment: (Stream contentStream, ContentType contentType) (Stream contentStream, string name) (Stream contentStream, string name, string mediaType) 我的想法是从byte []创建一个MemoryStream并将其传递给创建附件的方法。 不幸的是,我看不到从MemoryStream获取预期文件名和内容类型的方法,我也看不到如何提供正确的内容类型。 有纯文本,Pdf,Rtf等选项,但我没有看到立即跳出来作为我应该用于Excel文档的那个。 我能找到的最接近的是MediaTypeNames.Application.Octet ,它指出: Octet成员指定附件包含通用二进制数据。 但是,即使这是一个使用的,除非它可以作为Stream的属性传递,那么我的发送电子邮件的方法只能发送一个byte []作为Excel文档… 是否有其他类型的流可以使用? 或者我是否必须创建我自己的Stream类型,其中包含我需要的详细信息。 当然有人在那里做过这件事,当然微软会把这个想到这个级别…. 任何帮助将非常感激。 更新:请不要为使用将文件名作为字符串的构造函数的任何答案投票。 我真的需要帮助使用带有Stream的那些……我想避免将文件写入磁盘,通过电子邮件发送,然后立即将其删除。 既然有一种方法允许我这样做,我想尽可能使用那个。 解决方案更新 康拉德设法找到了我想要的东西! 谢谢堆人! 我只是记录建议的解决方案,以防万一在提供的链接上的内容发生了什么。 这个解决方案归功于www.systemnetmail.com static void AttachmentFromStream() { //create the mail message MailMessage mail = new MailMessage(); //set the addresses […]

如何在c#中发送多部分MIME消息?

我想发送包含HTML组件和纯文本组件的多部分MIME消息,供电子邮件客户端无法处理HTML的人使用。 System.Net.Mail.MailMessage类似乎不支持此function。 你怎么做呢?

无法从Win7上的Windows服务发送SMTP电子邮件

我正在使用c#.NET 4.0编写Windows服务(我的开发工作站是Windows 7)。 目的是在处理过程中出现错误时直接从服务发送电子邮件。 我已经包含了一个代码片段来显示我想要实现的目标: try { string emailAddresses = “me@sample.com”; string emailCCAddresses = “you@sample.com”; //Send the email using (MailMessage mailMsg = new MailMessage()) { mailMsg.To.Add(emailAddresses); mailMsg.From = new MailAddress(“winService@sample.com”); mailMsg.CC.Add(emailCCAddresses); mailMsg.Subject = ” Error Message “; mailMsg.Body = DateTime.Now + ” : Invalid File Encountered.” ; ////Creating the file attachment using (Attachment data = […]

从SignalR中心发送异步邮件

我需要通过SignalR集线器调用发送电子邮件。 我不希望send同步执行,因为我不想绑定WebSocket连接,但是如果可能的话,我希望通知调用者是否有任何错误。 我以为我可以在集线器中使用这样的东西(减去error handling和我希望它做的所有其他事情): public class MyHub : Hub { public async Task DoSomething() { var client = new SmtpClient(); var message = new MailMessage(/* setup message here */); await client.SendMailAsync(message); } } 但很快发现它不起作用; client.SendMailAsync调用抛出这个: System.InvalidOperationException:此时无法启动异步操作。 异步操作只能在异步处理程序或模块中启动,或者在页面生命周期中的某些事件中启动。 进一步的调查和阅读表明,SmtpClient.SendMailAsync是围绕EAP方法的TAP包装器,而SignalR不允许这样做。 我的问题是,有没有简单的方法直接从集线器方法发送电子邮件? 或者我唯一的选择是将电子邮件发送到其他地方? (例如,让集线器队列成为服务总线消息,然后一个独立的服务可以处理这些消息并发送电子邮件[虽然我也有更多的工作来实现将结果通知回集线器的客户端];或者让集线器向发送电子邮件的Web服务发出HTTP请求。

无法使用斯堪的纳维亚字符向地址发送电子邮件

使用SmtpClient , MailMessage和MailAddress类,我无法发送到电子邮件地址,例如åbc.def@domain.se。 我得到错误/exception,如下所示: 邮件标题中找到了无效字符:’å’。 —————————发送邮件时出错——————– ——- System.Net.Mail.SmtpException:客户端或服务器仅配置为具有ASCII本地部分的电子邮件地址:åbc.def@domain.se。 在System.Net.Mail.MailAddress.GetUser(Boolean allowUnicode) 在System.Net.Mail.MailAddress.GetAddress(布尔allowUnicode) 在System.Net.Mail.MailAddress.Encode(Int32 charsConsumed,Boolean allowUnicode) System.Net.Mail.Mail.Message.Send上的System.Net.Mail.MailAddressCollection.Encode(Int32 charsConsumed,Boolean allowUnicode)处于System.Net.Mail.Message.PrepareHeaders(Boolean sendEnvelope,Boolean allowUnicode)处(BaseWriter writer,Boolean sendEnvelope) ,System.Net.Mail.SmtpClient.Send(MailMessage消息)中的布尔值allowUnicode) 我的主题/正文中的这些字符很好,但不在电子邮件地址中。 我已经尝试过设置SmtpClient.DeliveryMethod = SmtpDeliveryFormat.International ,或者MailMessage.HeadersEncoding = Encoding.Unicode (或UTF8 ),它似乎没有改变任何东西。 这些是我们需要与之沟通的人的真实电子邮件地址,因此这有点问题。 我一直在挖掘.Net源代码,但没有真正得到任何地方。 我追踪了一个ServerSupportsEai属性,谷歌告诉我EAI代表电子邮件地址国际化( https://tools.ietf.org/html/rfc5336 ),但是我的代码或者特定服务器是否有限制还不太清楚我正在谈论只是不支持这个……因为我正在使用测试服务器来避免向毫无戒心的瑞典人发送电子邮件! 有人可以帮助我清除这一点 – .Net是否支持这一点,如果是这样,如果我的客户端代码应该做什么来启用它呢?

发送内联MHTML

我想知道是否可以通过.NET 2.0 MailMessage对象发送动态创建的内联MHTML文件。 内联我的意思是:它应该以用户可以看到它的方式发送,一旦他打开电子邮件,而不必打开/下载附件。

从C#启动电子邮件应用程序(MAPI)(带附件)

在过去,我使用MAPISendMail从带有文件附件的C ++应用程序启动Outlook(或任何所需的MAPI电子邮件应用程序)。 (类似于Microsoft Word的发送电子邮件function)。 我需要在C#应用程序中执行相同的操作,并在XP,Vista,Server 2008(以及我认为的Windows 7)上运行时使其工作。 MAPISendMail在Vista / 2008下是不可取的,因为它在Outlook运行时始终返回MAPI_ E_FAILURE,并且托管代码中不支持MAPI。 即使在检查此修复程序后: http : //support.microsoft.com/kb/939718我无法让它可靠地工作。 我知道Microsoft Word和Adobe Reader 9都可以在Vista下使用附件启动Outlook。 AC#兼容的解决方案将是首选,但我会对任何有效的(不必使用MAPI)感到满意。 我似乎无法找到当前的“解决方案”。 Stack Overflow上现有的答案似乎也没有涵盖这一点。 编辑: 我知道MAPI和C#不能一起工作,因此我将采用在Vista和Server 2008中运行的C / C ++解决方案,而不是以管理员身份运行。 请参阅Adobe Reader 9和Microsoft Word作为有效的示例。

如何使用OpenPop保存电子邮件附件

我创建了一个Web电子邮件应用程序,如何查看和保存附件? 我正在使用OpenPop ,第三方dll,我可以发送带附件的电子邮件和阅读没有附件的电子邮件。 这很好用: Pop3Client pop3Client = (Pop3Client)Session[“Pop3Client”]; // Creating newPopClient int messageNumber = int.Parse(Request.QueryString[“MessageNumber”]); Message message = pop3Client.GetMessage(messageNumber); MessagePart messagePart = message.MessagePart.MessageParts[1]; lblFrom.Text = message.Headers.From.Address; // Writeing message. lblSubject.Text = message.Headers.Subject; lblBody.Text=messagePart.BodyEncoding.GetString(messagePart.Body); 第二部分代码显示了附件的内容,但这仅在其文本文件中有用。 我需要能够保存附件。 我在这里的代码的底部部分写了我的消息正文,所以如果我收到一个附件,我无法查看我的消息正文。 if (messagePart.IsAttachment == true) { foreach (MessagePart attachment in message.FindAllAttachments()) { if (attachment.FileName.Equals(“blabla.pdf”)) { // Save the raw bytes […]

validationC#中是否存在电子邮件地址

关于这篇关于电子邮件validation的帖 使用C#,你会怎么样? 发出VRFY命令 发出RCPT命令

如何使用C#SMTP客户端进行Domainkeys / DKIM电子邮件签名?

我用C#编写了一个发送电子邮件的程序。 现在我需要使用Dominkeys / DKIM签署出站电子邮件,但我不知道该怎么做。 我已经设置了所有密钥,但我不知道如何将这些密钥和hwo包含在电子邮件标题中。