2009-09-09 10 views
1

Я осмотрел интернет, но не вижу ничего подходящего. Я просто хочу начать новое электронное письмо в outllook, но не хочу отправлять его, так как пользователь может захотеть добавить свои собственные вещи в электронную почту, и все, что делает моя программа, это добавить адрес и вложение.VB.Net Отправить по электронной почте

Любая помощь будет принята с благодарностью.

+0

Большое спасибо за помощь. Я имплантировал некоторые из предложений и начал работать с помощью com-оболочки. Я также помнил, что у меня был старый код, который сделал это в очень старом репозитории. Еще раз, спасибо. –

ответ

4

Вы можете просто вызвать Process.Start в исполняемом файле Outlook. Есть переключатели для автоматических населяющих сообщения а ..

Открыть новое сообщение электронной почты:

outlook.exe /c ipm.note 

Открыть новое сообщение электронной почты и населяющие отправители:

outlook.exe /c ipm.note /m [email protected] 

Открыть новую почту сообщение с прикреплением:

outlook.exe /c ipm.note /a filename 

outlook.exe /c ipm.note /m [email protected]&subject=test%20subject&body=test%20body 
5

Вот пример - http://support.microsoft.com/kb/310263

// 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.Recipient oRecip = (Outlook.Recipient)oMsg.Recipients.Add("e-mail address"); 
oRecip.Resolve(); 

//Set the basic properties. 
oMsg.Subject = "This is the subject of the test message"; 
oMsg.Body = "This is the text in the message."; 

//Add an attachment. 
// TODO: change file path where appropriate 
String sSource = "C:\\setupxlg.txt"; 
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. 
oRecip = null; 
oAttach = null; 
oMsg = null; 
oApp = null; 
+0

Этот подход очень хороший, только один недостаток, который вам нужно включить в сборку VSTO. – Jirapong

2

Вы можете использовать Process.Start ("электронная почта: ххй") формат. Это приведет к появлению почтового клиента по умолчанию с форматом, который вы отправили по почте.

string mailto = string.Format(
      "mailto:{0}?Subject={1}&Body={2}&Attach={3}", 
      address,subject,body,attach); 

System.Diagnostics.Process.Start(mailto) 

жаль ответить в C#.

1

Самый простой способ сделать это с помощью Outlook COM Interop - Просто добавьте COM ссылку на Outlook (он должен использовать первичный Interop в сборе, если он установлен)

Так что-то вроде:

Dim m_Email As New Microsoft.Office.Interop.Outlook.ApplicationClass 
dim m_Message As Microsoft.Office.Interop.Outlook.MailItem = m_Email.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) 
m_Message.To = "[email protected]" 
m_Message.Subject = "Subject" 
Смежные вопросы