簡體   English   中英

根據收件人自定義電子郵件

[英]Customise email based on recipient

使用C#,我正在向擁有Outlook的人員列表發送電子郵件。 在該電子郵件中,有一個指向共享日歷的鏈接。 鏈接如下所示:

<a href=\"outlook://Public Folders - joe.blogs@company.com/All Public Folders/Offices/MeetingRoomA">MeetingRoomA</a>

請注意,收件人的電子郵件地址構成鏈接的一部分? 這是因為從Outlook 2010開始,Microsoft已經強制要求共享日歷的鏈接必須指定用戶的電子郵件地址。 文章在這里

出於這個原因,如果我想將電子郵件發送給10個人,我目前正在使用以下代碼創建10封電子郵件,每個電子郵件都有一個唯一的鏈接:

"<a href=\"outlook://Public Folders - " + user.Address + "/All Public Folders/Offices/MeetingRoomA\">MeetingRoomA</a>"

這很好用,但如果我能發送一封電子郵件會很好(所以收件人可以看到還有誰收到了這封電子郵件)

有沒有辦法發送一封電子郵件,並在用戶端自定義鏈接?

不,不使用Outlook對象模型,MAPI或OUtlook公開的任何其他API。

如果使用直接SMTP,則可以執行此操作 - 實際收件人使用“RCPT TO”命令指定,而不是通過消息的To / CC MIME標頭指定(由DATA命令發送)。

繼續為每個用戶創建自定義電子郵件。 然后在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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM