Reputation: 53
I have a list of documents and email addresses.
I am trying to create a method I can use to iterate throw the list of emailAddresses and for each creates a new email I Outlook and attaches the corresponding document.
The Creating the MailItem is was I get stuck. Found a sample on MSDN that should work from Office 2013 and forward.
This is what I have so far:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Outlook;
namespace Test_Invoice
{
class SendviaMail
{
string demofile = @"C:\Desktop\test-inv\1_Test Testesen_1_010.pdf";
public void Send()
{
MailItem eMail = new MailItem();
eMail.Subject = "Here is Your Invoice";
eMail.To = "[email protected]";
eMail.Body = "Dette er en test mail for TestMailApp";
}
public void Send(string email, string filename)
{
}
}
}
I've been trying to understand the documentation on MSDN and read thru a few posts on here.
As far as I can figure out, the next step is to add the attachment (the demo file) If I understand it right I need something like
eMail.AttachmentAdd = demofile;
But that does not work.
It might be me that does not understand the library correctly. Looking at this sample from MSDN https://msdn.microsoft.com/en-us/library/bb644320.aspx
Results in this code:
using Microsoft.Office.Interop.Outlook;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace Test_Invoice
{
class SendviaMail
{
string demofile = @"C:\Desktop\test-inv\1_Test Testesen_1_010.pdf";
public void Send()
{
Outlook.MailItem mail = Application.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
mail.Subject = "Quarterly Sales Report FY06 Q4";
//MailItem eMail = new MailItem();
//eMail.Subject = "tilmelding og faktura";
//eMail.To = "[email protected]";
//eMail.Body = "Dette er en test mail for TestMailApp";
//eMail.AttachmentAdd
}
public void Send(string email, string filename)
{
}
}
}
Upvotes: 4
Views: 15782
Reputation: 18082
The fixed sample code should look like this:
var ol = new Outlook.Application();
Outlook.MailItem mail = ol.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
note that you need to declare the Outlook
alias with your using
statement:
using Outlook = Microsoft.Office.Interop.Outlook;
(as you already did) ... but must also remove
using Microsoft.Office.Interop.Outlook;
to avoid Visual Studio confusing your references.
The rest of the MSDN example should work as expected I don't have any other samples I can point you to, so your best bet is searching for Microsoft.Office.Interop.Outlook
or explore linked questions here.
Upvotes: 1
Reputation: 2703
use .Net class for that:
public static void CreateMessageWithAttachment(string server,string filePath)
{
// Specify the file to be attached and sent.
// This example assumes that a file named Data.xls exists in the
// current working directory.
string file = filePath;
// Create a message and set up the recipients.
MailMessage message = new MailMessage(
"[email protected]",
"[email protected]",
"Quarterly data report.",
"See the attached spreadsheet.");
// Create the file attachment for this e-mail message.
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
// Add time stamp information for the file.
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
// Add the file attachment to this e-mail message.
message.Attachments.Add(data);
//Send the message.
SmtpClient client = new SmtpClient(server);
// Add credentials if the SMTP server requires them.
client.Credentials = CredentialCache.DefaultNetworkCredentials;
try {
client.Send(message);
}
catch (Exception ex) {
Console.WriteLine("Exception caught in CreateMessageWithAttachment(): {0}",
ex.ToString() );
}
data.Dispose();
}
after that just iterate the list from loop and send it to the function
more example you can use https://www.codeproject.com/Tips/286952/create-a-simple-smtp-server-in-csharp
Upvotes: 1