Reputation: 949
I'm working in console Application and I'm using the below c# code to send mail automatically on a button click event,
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("[email protected]");
oCCRecip.Add("[email protected]");
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?
Upvotes: 2
Views: 11276
Reputation: 8104
Set MailItem.SendUsingAccount property on oMsg
http://msdn.microsoft.com/en-us/library/office/ff869311%28v=office.14%29.aspx
you can select only from Application.Session.Accounts collection.
or possibly check
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
Sending defer message delivery and change default account using Powershell
Following code is ok with intellisense, check your DLL version. Checked with v 14 and v 12 of Outlook PIA.
Package downloaded from 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;" does not work at all.
Upvotes: 4