我刚刚发布过(相关但不是同一个问题)。
所以我在我使用的应用程序中处理c#中的电子邮件按钮,我目前正在尝试将多个电子邮件地址传递到mailMsg.To.Add(emailAddress)。
emailAddress中的字符串将是以;分隔的电子邮件地址。 mailMsg.To.Add方法采用电子邮件地址,格式为" email@test.co.uk" +" email2@test.co.uk"。我设法在开始和结束时分割并加入了带引号的电子邮件地址,但在地址之间,我似乎无法获得" +"在那里(制作" email@test.co.uk" +" email2@test.co.uk")。
每当我尝试在string.Join中包含引号时,它总是包含转义字符。
string strQuote = ;
string[] emails = SessionEmail.Split(';');
gblTeacherEmail = string.Join((strQuote + " + " + strQuote),emails);
所以在strQuote中,我已经尝试了@"""&#34 ;;但这给了"在电子邮件地址的末尾。我也试过" \"&#34 ;;但这会得到相同的结果。
我确定我做错了什么。
编辑:我将包含一个示例。
所以如果SessionEmail =" email1@test.co.uk; email2@test.co.uk" ;; string strQuote = @"""&#34 ;; 然后 string [] emails = SessionEmail.Split(&#39 ;;'); gblEmails = string.Join((strQuote +" +" strQuote),电子邮件);
这将输出为 SessionEmail =" email1@test.co.uk \" + \" email2@test.co.uk" ;;
如果strQuote =" \"";
,也会发生同样的情况答案 0 :(得分:2)
如果您使用的是System.Net.Mail.MailMessage类,并且只想在To方法中添加多个电子邮件地址,则需要使用以下格式传递它们:
“EMAIL1 @ test.co.uk,EMAIL2 @ test.co.uk”
因此,在您的具体情况下,您只需要替换“;”用“,”
答案 1 :(得分:1)
虽然接受的解决方案有效(使用逗号分隔电子邮件地址),但我认为这不是将许多收件人添加到电子邮件中的“正确方法”。如果您检查RFC 5321和RFC 5322,您会看到,虽然逗号不在电子邮件地址的本地部分的受支持字符列表中,但如果本地部分是引用的,则允许字符串...所以虽然不推荐(即使是RFC),但"My,Email"@myhost.com
是完全合法的电子邮件地址,并且会破坏解决方案。
所以“正确的方法”是将每个收件人添加到To
集合中(通过字符串或MailAddress
个实例)。
所以在你的情况下,如果绝对需要源输入是一个以分号分隔的字符串(这也是一个坏主意),我会做类似的事情:
var emails = SessionEmail.Split(';').Select(x => new MailAddress(x));
mailMsg.To.AddRange(emails);
这可能是“超过顶部”,因为如果任何人都有引用逗号电子邮件地址,他应该让任何邮件客户端崩溃,但只是为了“正确”。我自己甚至为多个电子邮件地址实现了以分号分隔的字符串,但我知道这不是“正确”的方式。
答案 2 :(得分:0)
我相信您使用的是mailMessage.To.Add()方法的弃用版本。请参阅:System.Net.Mail and multiple TO recipients
我知道问题是如何在那里获取引号,但显然意图是发送给多个收件人。为此,您应将每个电子邮件地址添加为MailAddress的实例。这将使用当前方法,而不是不应使用的原始弃用方法。