MailMessage 属性不接受参数变量
MailMessage properties not accepting parameter variables
出于某种原因,在尝试为 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
参数,其中 none 似乎有效,但是当它们在方法内部初始化时,它运行完美。
尝试使用参数时出错:
System.FormatException: 'The specified string is not in the form required for an e-mail address.'
已修复:类似地,如果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);
}
(只是想提一下,如果我找到解决方案,我会将它们制作成数组或列表)
搜索了一段时间后,我发现我把它弄得比实际情况要复杂得多。我使用了一个 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
};
出于某种原因,在尝试为 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
参数,其中 none 似乎有效,但是当它们在方法内部初始化时,它运行完美。
尝试使用参数时出错:
System.FormatException: 'The specified string is not in the form required for an e-mail address.'
已修复:类似地,如果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);
}
(只是想提一下,如果我找到解决方案,我会将它们制作成数组或列表)
搜索了一段时间后,我发现我把它弄得比实际情况要复杂得多。我使用了一个 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
};