简体   繁体   English

C#使用Outlook发送邮件

[英]C# to Send Mail using Outlook

I'm working in console Application and I'm using the below c# code to send mail automatically on a button click event, 我在控制台应用程序中工作,我使用下面的c#代码在按钮点击事件中自动发送邮件,

    public void SendMail()
    {
        //// Create the Outlook application by using inline initialization.
        Outlook.Application oApp = new Outlook.Application();

        ////Create the new message by using the simplest approach.
        Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

        //Add a recipient.
        // TODO: Change the following recipient where appropriate.
        Outlook.Recipients oRecips = oMsg.Recipients;
        List<string> oTORecip = new List<string>();
        List<string> oCCRecip = new List<string>();

        oTORecip.Add("example@test.com");
        oCCRecip.Add("example@test.com");
        foreach (string t in oTORecip)
        {
            Outlook.Recipient oTORecipt = oRecips.Add(t);
            oTORecipt.Type = (int)Outlook.OlMailRecipientType.olTo;
            oTORecipt.Resolve();
        }

        foreach (string t in oCCRecip)
        {
            Outlook.Recipient oCCRecipt = oRecips.Add(t);
            oCCRecipt.Type = (int)Outlook.OlMailRecipientType.olCC;
            oCCRecipt.Resolve();
        }

        //Set the basic properties.
        oMsg.Subject = "TestMail- " + DateTime.Today.ToString("MM/dd/yyyy");
        oMsg.HTMLBody = "<html>" +
            "<head>" +
            "<title>TestMail</title>" +
            "</head>" +
            "<body style='background-color:#E6E6E6;'>" +
            "<div style='font-family: Georgia, Arial; font-size:14px; '>Hi,<br /><br />" +
            "PFA<br />" +
            "This is Test Mail.Please Ignore.<br /><br /><br /><br /><br />" +
            "Thanks & Regards<br />" +
            "test"+
            "</div>" +
            "</body>" +
            "</html>";
        string date = DateTime.Today.ToString("MM-dd-yyyy");

        //Add an attachment.
        // TODO: change file path where appropriate
        String sSource = "D:\\Test\\test_" + date + ".xlsx";
        String sDisplayName = "MyFirstAttachment";
        int iPosition = (int)oMsg.Body.Length + 1;
        int iAttachType = (int)Outlook.OlAttachmentType.olByValue;
        Outlook.Attachment oAttach = oMsg.Attachments.Add(sSource, iAttachType, iPosition, sDisplayName);

        // If you want to, display the message.
        // oMsg.Display(true);  //modal

        //Send the message.
        oMsg.Save();
        oMsg.Send();

        //Explicitly release objects.
        oTORecip = null;
        oCCRecip = null;
        oAttach = null;
        oMsg = null;
        oApp = null;
    }

this code is working fine.I want to send the mail using another account.HOw to give the From address in the Above code? 这段代码工作正常。我想用另一个账号发送邮件。如何在上面的代码中给出发件人地址? Is it possible to do so?what is the c# code i need to use to send the mail on behalf of someother account using c# code? 是否可以这样做?我需要使用c#代码代表另一个帐户发送邮件的c#代码是什么?

Set MailItem.SendUsingAccount property on oMsg 在oMsg上设置MailItem.SendUsingAccount属性

http://msdn.microsoft.com/en-us/library/office/ff869311%28v=office.14%29.aspx http://msdn.microsoft.com/en-us/library/office/ff869311%28v=office.14%29.aspx

you can select only from Application.Session.Accounts collection. 您只能从Application.Session.Accounts集合中进行选择。

or possibly check 或者可能检查

MailItem.SentOnBehalfOfName http://msdn.microsoft.com/en-us/library/office/ff862145%28v=office.14%29.aspx MailItem.SentOnBehalfOfName http://msdn.microsoft.com/en-us/library/office/ff862145%28v=office.14%29.aspx

(for exchange) (交换)

There are some similar posts: 有一些类似的帖子:

Outlook automation - Change Sender Account Outlook自动化 - 更改发件人帐户

Sending defer message delivery and change default account using Powershell 发送延迟邮件传递并使用Powershell更改默认帐户

EDIT 编辑

Following code is ok with intellisense, check your DLL version. 以下代码可以使用intellisense,检查您的DLL版本。 Checked with v 14 and v 12 of Outlook PIA. 使用Outlook PIA的v 14和v 12进行检查。

Package downloaded from http://www.microsoft.com/en-us/download/details.aspx?id=43664 http://www.microsoft.com/en-us/download/details.aspx?id=43664下载的软件包

using Microsoft.Office.Interop.Outlook;
//C:\Program Files\Microsoft Visual Studio 11.0\Visual Studio Tools for Office\PIA\Office14\Microsoft.Office.Interop.Outlook.dll
//14.0.0.0 or 12.0.0.0 - it works from Outlook 2007 and higher

namespace ConsoleApplication1
{
    class Program
    {
        public void SendMail()
        {
            //// Create the Outlook application by using inline initialization.
            Application oApp = new Application();
            ////Create the new message by using the simplest approach.
            MailItem oMsg = (MailItem)oApp.CreateItem(OlItemType.olMailItem);
            oMsg.SendUsingAccount = oApp.Session.Accounts[2]; // it starts at 1

...

It seems you are using some other assembly DLL because for me the statement "using Microsoft.Office.Interop;" 看来你正在使用其他一些程序集DLL因为对我来说“使用Microsoft.Office.Interop;” does not work at all. 根本不起作用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM