c# - 如何发送 MimeMessage
问题描述
我可以知道如何发送 MimeMessage 吗?
下面是我的代码片段:
MimeMessage eml = MimeMessage.Load(savedEmlFullFilePath);
MimeMessage toSend = Reply(eml,true); //to send out this message
public static MimeMessage Reply(MimeMessage message, bool replyToAll)
{
var reply = new MimeMessage();
// reply to the sender of the message
if (message.ReplyTo.Count > 0)
{
reply.To.AddRange(message.ReplyTo);
}
else if (message.From.Count > 0)
{
reply.To.AddRange(message.From);
}
else if (message.Sender != null)
{
reply.To.Add(message.Sender);
}
if (replyToAll)
{
reply.To.AddRange(message.To);
reply.Cc.AddRange(message.Cc);
}
// set the reply subject
if (!message.Subject.StartsWith("Re:", StringComparison.OrdinalIgnoreCase))
reply.Subject = "Re:" + message.Subject;
else
reply.Subject = message.Subject;
// construct the In-Reply-To and References headers
if (!string.IsNullOrEmpty(message.MessageId))
{
reply.InReplyTo = message.MessageId;
foreach (var id in message.References)
reply.References.Add(id);
reply.References.Add(message.MessageId);
}
// quote the original message text
using (var quoted = new StringWriter())
{
var sender = message.Sender ?? message.From.Mailboxes.FirstOrDefault();
quoted.WriteLine("On {0}, {1} wrote:", message.Date.ToString("f"), !string.IsNullOrEmpty(sender.Name) ? sender.Name : sender.Address);
using (var reader = new StringReader(message.TextBody))
{
string line;
while ((line = reader.ReadLine()) != null)
{
quoted.Write("> ");
quoted.WriteLine(line);
}
}
reply.Body = new TextPart("plain")
{
Text = quoted.ToString()
};
}
return reply;
}
编辑:还想知道是否可以将 MimeMessage 解析为 EmailMessage,以便我可以将其作为ResponseMessage
using EWS
...
解决方案
来自 MailKit 自述文件:
using (var client = new SmtpClient ()) {
// For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
client.ServerCertificateValidationCallback = (s,c,h,e) => true;
client.Connect ("smtp.server.com", 587, false);
// Note: only needed if the SMTP server requires authentication
client.Authenticate ("username", "password");
client.Send (message);
client.Disconnect (true);
}
推荐阅读
- javascript - 使用 chart.js 显示数组中的多个数据集
- r - Prophet Package - 在 R 中按 Group 为预测添加假期
- haskell - 在 Haskell 中自动插入惰性
- c# - 在索引 MVC5 asp.net C# 上更改项目的顺序
- javascript - 访问 vue-i18n 消息作为对象
- python - 如何调试 UDP 多播请求/回复中的延迟?
- javascript - Javascript ReferenceError:在 src 中添加 Rx.js 时未定义 Observable
- javascript - 使用“document.currentScript.ownerDocument.createElement”(来自导入的 HTML)创建的图像永远不会加载
- vb.net - Microsoft Teams API 返回未经授权
- typo3 - Typo3 vhs 语言返回 id 而不是语言