2009-09-09 10 views
1

J'ai regardé autour de l'Internet mais je ne vois rien de pertinent. Je veux juste commencer un nouvel email dans outllook mais ne veux pas l'envoyer car l'utilisateur peut vouloir ajouter leurs propres choses à l'email et tout ce que mon programme fait ajoute une adresse et une pièce jointe.VB.Net Email Envoyer

Toute aide sera grandement appréciée.

+0

Merci beaucoup pour l'aide. J'ai implanté quelques-unes des suggestions et je l'ai fait en utilisant le wrapper com. Je me suis aussi souvenu que j'avais un ancien code qui faisait ça dans un très vieux dépôt. Merci une fois de plus. –

Répondre

4

Vous pouvez simplement appeler Process.Start sur l'exécutable Outlook. Il y a des commutateurs à auto peuplant le message aussi bien ..

Ouvrez un nouveau message:

outlook.exe /c ipm.note 

Ouvrez un nouveau message et peupleront expéditeur:

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

Ouvrir un nouveau message message avec pièce jointe:

outlook.exe /c ipm.note /a filename 

Combinaison:

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

Voici un exemple - 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

Cette approche est très bonne, un seul inconvénient, vous devez inclure l'assemblage VSTO. – Jirapong

2

Vous pouvez utiliser Process.Start ("mailto: xxx") format. Cela fera apparaître le client de messagerie par défaut avec le format que vous avez mis dans le courrier.

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

System.Diagnostics.Process.Start(mailto) 

Désolé pour répondre en C#.

1

La meilleure façon de le faire est en utilisant le interop COM Perspectives - Il suffit d'ajouter une référence COM à Outlook (il doit utiliser l'interop primaire Assemblée si elle est installée)

donc quelque chose comme:

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" 
Questions connexes