出于某种原因,在尝试为MailMessage对象初始化属性From
,Subject
和Body
时,我无法使用方法参数中的变量。
前 - 不工作:
public static void MailToEML(String email, String subj, String body)
{
MailMessage mailMessage = new MailMessage
{
From = new MailAddress(email),
Subject = subj,
Body = body
};
(其余方法无关紧要)
前作品
public static void MailToEML()
{
String email = "some@email.com";
String subj = "Subject";
String body = "Contents";
MailMessage mailMessage = new MailMessage
{
From = new MailAddress(email),
Subject = subj,
Body = body
};
我已尝试使用List<String>
,String[]
和String
参数,但它们似乎都无法正常工作,但当它们在方法内初始化时,它可以完美无缺地运行。
尝试使用参数时出错:
System.FormatException:&#39;指定的字符串不是电子邮件地址所需的格式。&#39;
修复:类似地,如果From
正确,Subject
将输出相同的错误消息,与Body
相同。
解决方案:将{n}添加到代码中的其他位置Subject
,格式化不同意,所以我只需删除
通话方式:
public void ExportClicked(Office.IRibbonControl control)
{
Object selObject = Globals.ThisAddIn.Application.ActiveExplorer().Selection[1];
Outlook.MailItem mailItem =
(selObject as Outlook.MailItem);
String email;
String subject;
String body;
email = mailItem.SenderEmailAddress;
subject = mailItem.Subject;
body = mailItem.Body;
if (mailItem.Subject == null)
{
subject = ThisAddIn.lang[1]; //Array element determines language, not important here
}
ThisAddIn.MailToEML(email, subject, body);
}
(我想提一下,如果我找到解决方案,我会将这些数组或列表制作成)
答案 0 :(得分:0)
经过一段时间的搜索后,我发现我让它变得比实际上复杂得多。我使用的是MailItem对象,而不是几个字符串值。
这是新的MailToEml()方法:
public static void MailToEML(Outlook.MailItem mail)
{
MailMessage mailMessage = new MailMessage
{
From = new MailAddress(mail.SenderEmailAddress),
SubjectEncoding = System.Text.Encoding.UTF8,
Subject = mail.Subject,
Body = mail.Body
};