C# MailTo с прикачен файл?

В момента използвам метода по-долу, за да отворя потребителския имейл акаунт в Outlook и да попълня имейл със съответното съдържание за изпращане:

public void SendSupportEmail(string emailAddress, string subject, string body)
{
   Process.Start("mailto:" + emailAddress + "?subject=" + subject + "&body=" 
                + body);
}

Искам обаче да мога да попълня имейла с прикачен файл.

нещо като:

public void SendSupportEmail(string emailAddress, string subject, string body)
{
   Process.Start("mailto:" + emailAddress + "?subject=" + subject + "&body=" 
      + body + "&Attach="
      + @"C:\Documents and Settings\Administrator\Desktop\stuff.txt");
}

Това обаче не изглежда да работи. Някой знае ли за начин, който ще позволи това да работи!?

Помощта много оценявам.

За разбирането.


person Goober    schedule 28.07.2009    source източник
comment
Дубликат: stackoverflow.com/q/20328598/5389585   -  person sondra.kinsey    schedule 05.03.2021


Отговори (5)


Какво е изключението, което получавате?
person Jon Galloway    schedule 28.07.2009

Ако искате да получите достъп до имейл клиента по подразбиране, тогава можете да използвате MAPI32.dll (работи само на Windows OS). Разгледайте следната обвивка:

http://www.codeproject.com/KB/IP/SendFileToNET.aspx

Кодът изглежда така:

MAPI mapi = new MAPI();
mapi.AddAttachment("c:\\temp\\file1.txt");
mapi.AddAttachment("c:\\temp\\file2.txt");
mapi.AddRecipientTo("[email protected]");
mapi.AddRecipientTo("[email protected]");
mapi.SendMailPopup("testing", "body text");

// Or if you want try and do a direct send without displaying the mail dialog
// mapi.SendMailDirect("testing", "body text");
person Alex    schedule 29.08.2009
comment
Този код е полезен за изпращане на прикачени файлове към имейл клиента по подразбиране. Не всеки използва Outlook, така че този код е страхотен! - person Brent; 06.03.2010
comment
Това хвърля AccessViolationException, когато прикача файл. - person Sinaesthetic; 27.12.2015
comment
Хубава справка! Трябва да е стандартният начин да го направите. - person LueTm; 23.01.2017
comment
Ако вашият имейл клиент вече работи, ще трябва да се уверите, че вашият имейл клиент и вашата програма работят с едни и същи привилегии. Например, ако Outlook работи като администратор, вашето приложение, което използва този MAPI клас, също трябва да стартирате като администратор. В противен случай може да получите MAPISendMail fails and returns error code 2 - person Daniel Bonetti; 07.07.2017

Това приложение наистина ли трябва да използва Outlook? Има ли причина да не използвате пространството от имена System.Net.Mail?

Ако наистина трябва да използвате Outlook (а аз не бих го препоръчал, защото тогава базирате приложението си на зависимости от трети страни, които вероятно ще се променят), ще трябва да погледнете пространствата от имена на Microsoft.Office

Бих започнал тук: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.aspx

person David    schedule 28.07.2009

Опитайте тази

var proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = string.Format("\"{0}\"", Process.GetProcessesByName("OUTLOOK")[0].Modules[0].FileName);
proc.StartInfo.Arguments = string.Format(" /c ipm.note /m {0} /a \"{1}\"", "[email protected]", @"c:\attachments\file.txt");
proc.Start();
person kernowcode    schedule 27.08.2014

Официално да, протоколът mailTo не поддържа прикачените файлове. Но Williwyg го обясни много добре тук, че има начин да направите това - Отворете пощенския клиент по подразбиране заедно с прикачен файл

person Mahesh    schedule 09.09.2015
comment
Не е толкова лесно, както е описано в тази публикация, вижте последния коментар под нея, публикуван от @ A. Blodgett на 7 май '19 в 3:52 - person Marcin; 12.02.2020