使用C#,我正在向拥有Outlook的人员列表发送电子邮件。在该电子邮件中,有一个指向共享日历的链接。链接如下所示:
<a href=\"outlook://Public Folders - joe.blogs@company.com/All Public Folders/Offices/MeetingRoomA">MeetingRoomA</a>
请注意,收件人的电子邮件地址构成了链接的一部分?这是因为从Outlook 2010开始,Microsoft已经强制要求共享日历的链接必须指定用户的电子邮件地址。第here条。
出于这个原因,如果我想将电子邮件发送给10个人,我目前正在使用以下代码创建10封电子邮件,为每个人提供一个独特的链接:
"<a href=\"outlook://Public Folders - " + user.Address + "/All Public Folders/Offices/MeetingRoomA\">MeetingRoomA</a>"
这很好用,但如果我可以发送一封电子邮件会很好(所以收件人可以看到还有谁收到了这封电子邮件)
有没有办法发送一封电子邮件,并在用户端自定义链接?
答案 0 :(得分:2)
不,不使用Outlook对象模型,MAPI或OUtlook公开的任何其他API。
如果您使用直接SMTP, 可以 执行此操作 - 使用&#34; RCPT TO&#34;指定实际收件人。命令,而不是消息的To / CC MIME标头(由DATA命令发送)。
答案 1 :(得分:1)
继续为每个用户创建自定义电子邮件。然后在MIME标题中,列出它去过的所有人。这意味着每个用户都会收到他们的个性化电子邮件,并且能够看到其他人收到了该电子邮件。
要为SMTP和MIME地址指定不同的值,您需要一个支持它的smtp库。一个这样的库是MailKit,这是一个如何使用它的例子:
var message = new MimeMessage();
message.From.Add(new MailboxAddress("MeetingOfficeA", "noreply@office.com"));
//the following people will be in the "sent to" list, but won't receive the email
message.To.Add(new MailboxAddress("Fidel Perez-Smith", "fidel@office.com"));
message.To.Add(new MailboxAddress("John Doe", "john.doe@office.com");
message.Subject = "Testing";
message.Body = new TextPart("plain") { Text = @"Testing 123" };
using (var client = new SmtpClient()) {
client.Connect("smtpserver.office.com");
//only the people in the following line will receive the email
client.Send(message, new MailboxAddress("MeetingOfficeA", "noreply@office.com"), new [] { new MailboxAddress("Fidel Perez-Smith", "fidel@office.com") });
client.Disconnect(true);
}