2015-08-05 4 views
2

Я отправляю письма из своего приложения winforms с помощью функции MailMessage.C# MailMessage: отправка почты с использованием учетной записи электронной почты по умолчанию

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

Я хочу автоматически установить «От» электронной почты на учетную запись электронной почты по умолчанию, настроенную в почтовом клиенте. Как я могу это сделать?

var mailMessage = new MailMessage(); 
mailMessage.From = new MailAddress(fromEmailAccount); 
mailMessage.To.Add(new MailAddress("[email protected]")); 
mailMessage.Subject = "Mail Subject"; 
mailMessage.Body = "Mail Body"; 

Если я оставлю fromEmailAccount пустым Я получаю сообщение об ошибке, и если установить его на что-то вроде «[email protected]» электронная почта не отправляет, как локальная учетная запись не имеет разрешения, чтобы отправить его через неизвестный аккаунт.

+0

увидеть это http://stackoverflow.com/questions/809538/how-to-send-email-using-default-email-client – prem

+0

У меня есть именно эта проблема, и насколько я могу судить, не существует решения, которое будет работать для пользователей в любой операционной системе с любым smtp-клиентом. –

ответ

1

Получить информацию о пользователе из ОС (если Windows 8, 10) их установить от адреса электронной почты пользователя, увидеть этот вопрос: Get user information in Windows 8?

+0

Жаль, что он будет работать только с пользователями домена :-( –

0

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

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using Outlook = Microsoft.Office.Interop.Outlook; 

namespace testMailEmailUser 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      Outlook.Application application = new Outlook.Application(); 
      Outlook.AddressEntry mailSender = null; 

      Outlook.Accounts accounts = application.Session.Accounts; 

      foreach (Outlook.Account account in accounts) 
      { 
       mailSender = account.CurrentUser.AddressEntry; 
      } 

      Outlook.MailItem mail = 
       application.CreateItem(
       Outlook.OlItemType.olMailItem) 
       as Outlook.MailItem; 

      if (mailSender != null) 
      { 
       mail.To = "[email protected]; [email protected]"; 
       mail.Subject = "Some Subject Matter"; 
       mail.Body = "Some Body Text"; 
       mail.Sender = mailSender; 
       mail.Display(false); 
      } 
     } 

    } 
} 
+0

К сожалению, я не могу использовать это решение для своего приложения ASP.NET, и это явно бесполезно, если пользователь не использует Windows и Outlook. –

Смежные вопросы