MailMessage属性不接受参数变量

时间:2018-02-10 03:51:52

标签: c# mailmessage

出于某种原因,在尝试为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参数,但它们似乎都无法正常工作,但当它们在方法内初始化时,它可以完美无缺地运行。

尝试使用参数时出错:

  

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

}

(我想提一下,如果我找到解决方案,我会将这些数组或列表制作成)

1 个答案:

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