【问题标题】:Set up sender account to my Microsoft.Office.Interop.Outlook._MailItem from my WPF Project从我的 WPF 项目为我的 Microsoft.Office.Interop.Outlook._MailItem 设置发件人帐户
【发布时间】:2020-06-19 20:17:57
【问题描述】:

我有一个 WPF C# 项目,我有一个发送电子邮件的功能,使用 Microsoft.Office.Interop.Outlook._MailItem 但我不知道如何配置发件人帐户,它是一个 gmail 帐户,我不知道如何告诉它或如何给它 用户名以及其中的密码,有人可以指导我吗?

public void sendEMailThroughOUTLOOK(string PDFAdjunto, string XMLAdjunto, string from, string[] to, string subject, string body, string cc)
{
    try
    {            
        Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
        // Create a new mail item.
        Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

        // add to's
        if (to[0] != string.Empty && to[0] != null)
        {
            oMsg.Recipients.Add(to[0]);
        }
        if (to[1] != string.Empty && to[1] != null)
        {
            oMsg.Recipients.Add(to[1]);
        }

        // Mail body
        oMsg.Body = body;
        oMsg.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatPlain;

        // Mail attachments
        Microsoft.Office.Interop.Outlook.Attachment oAttach1 = oMsg.Attachments.Add(XMLAdjunto);
        Microsoft.Office.Interop.Outlook.Attachment oAttach2 = oMsg.Attachments.Add(PDFAdjunto);

        // Mail subject
        oMsg.Subject = subject;

        // Resolve accounts
        oMsg.Recipients.ResolveAll();

        // Send mail
        ((Microsoft.Office.Interop.Outlook._MailItem)oMsg).Send();

        // Clean up.
        oMsg = null;
        oApp = null;
    }
    catch (System.Exception e) 
    {
        Mensaje = new wMensaje("Error en envío de Mail", DateTime.Now.ToString()
            + System.Environment.NewLine + subject
            + System.Environment.NewLine + " De: '" + from + "' "
            + System.Environment.NewLine + " Para: '" + to[0] + "', '" + to[1] + "' '"
            + (e.Message.Contains("Operación anulada") ? System.Environment.NewLine + System.Environment.NewLine + "-->  Asegúrese de tener ABIERTO su Outlook  <--" : "")
            + System.Environment.NewLine + System.Environment.NewLine + " Error: "
        + System.Environment.NewLine + System.Environment.NewLine
        + (e.InnerException == null ? e.Message : e.InnerException.ToString()));
        Mensaje.ShowDialog();
    }
}

【问题讨论】:

    标签: c# wpf outlook office-interop


    【解决方案1】:

    我不知道怎么配置发件人账号,是个gmail账号,不知道怎么告诉,也不知道怎么给它的用户名和密码

    您可以使用MailItem.SendUsingAccount 属性返回或设置一个Account 对象,该对象表示将在其下发送MailItem 的帐户。 SendUsingAccount 属性可用于指定在调用 Send 方法时用于发送 MailItem 的帐户。如果为MailItem 指定的帐户不再存在,则此属性返回Null(Visual Basic 中为Nothing)。

    注意,为了能够设置SendUsingAccount 属性,必须在 Outlook 配置文件中对其进行配置。


    您也可以考虑使用System.Net.Mail 命名空间,在Send email using System.Net.Mail through gmail 文章中了解更多信息。

    【讨论】:

    • 好的,我明白了,我必须使用要用于从我的应用程序发送消息的帐户打开 de Outlook?如果我有用户和密码帐户怎么办?我无法在我的项目中的函数中设置并声明它?
    • 不,Outlook 对象模型不提供指定发送帐户的用户名和密码。您需要在 Outlook 中配置此帐户或委派代表发送的权限。
    • 谢谢 Eugene Astafiev 我接受了您对 .Net.Mail 的建议
    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多