MailMessage 属性不接受参数变量

MailMessage properties not accepting parameter variables

出于某种原因,在尝试为 MailMessage 对象初始化属性 FromSubjectBody 时,我无法使用方法参数中的变量。

例如 - 不起作用:

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
    };