2012-10-08 8 views
7

próbuję wysłać wiadomość e-mail za pomocą gmail SMTP w C# przy użyciu kodu poniżejWyślij e-mail za pośrednictwem gmail SMTP

MailMessage message = new MailMessage(); 
message.To.Add("my email"); 
message.Subject = "subject"; 
message.From = new MailAddress("any email"); 
message.Body = "body"; 

message.Attachments.Add(new System.Net.Mail.Attachment(path)); 
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); 
smtp.EnableSsl = true; 
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtp.UseDefaultCredentials = false; 
smtp.Credentials = new System.Net.NetworkCredential("my user", "my pass"); 

smtp.Send(message); 

Kiedy odbierać wiadomości e-mail, pole OD jest wypełniona my user. Używam UseDefaultCredentials jako false. Kiedy patrzę na wynik, pole FROM jest wypełnione my user. Czy pole FROM nie powinno być wypełnione przez ? Jak mogę wysłać wiadomość e-mail, używając adresu nadawcy?

+1

Myślę, że jest to sposób, w jaki GMail kontroluje korzystanie ze swojej usługi SMTP. Jeśli ktoś mógłby wysyłać pocztę do kogoś innego za pośrednictwem Gmaila, spamerzy będą tam gromadzić. W ten sposób wszystkie wiadomości e-mail wysyłane "w imieniu użytkownika" pochodzą od ciebie (= "mój użytkownik"). – n8wrl

+0

Zrobiłem to już w programie JAVA ... wiele lat temu! :( – Victor

+0

Czy masz szansę sprawdzić pełne źródło otrzymywanej wiadomości e-mail? Powinno to być "Od: każda wiadomość e-mail" i "Nadawca: mój użytkownik zamiast". Aplikacja, z której widzisz e-mail, może przedstawiać Nadawcę jako jeśli jest From i powoduje zamieszanie –

Odpowiedz

4

Po uruchomić fragment kodu otrzymuję:

Return-Path: <my user> 
Received: from Psi ([80.92.234.64]) 
     by mx.google.com with ESMTPS id f1sm20531634wiy.2.2012.10.08.10.07.49 
     (version=TLSv1/SSLv3 cipher=OTHER); 
     Mon, 08 Oct 2012 10:07:49 -0700 (PDT) 
Message-ID: <[email protected]> 
Sender: Roman R. <my user> 
MIME-Version: 1.0 
From: any email 
To: my email 
Date: Mon, 08 Oct 2012 10:07:49 -0700 (PDT) 
Subject: Subject 
Content-Type: text/plain; charset=us-ascii 
Content-Transfer-Encoding: quoted-printable 

Body 

Sender jest adres e-mail używany do uwierzytelniania z Google Mail. From to "od" w kodzie. Aplikacja odbierająca może mylić te dwa elementy, a reszta wygląda tak, jak powinna. Niektórzy klienci poczty prezentują Od + Nadawca (gdy są inni) jako "wysyłane przez Nadawcę w imieniu Od".

Być może niepokoi Cię fakt, że Google Mail nadal ujawnia konto, z którego wysyłana jest wiadomość e-mail, poprzez pole Sender, ale tak to działa. Wysyłasz z tego konta.

Innym możliwym powodem jest sam adres pocztowy From. Jeśli dodałeś go do swojego konta Google Mail jako jednego ze swoich adresów (i potwierdzono za pośrednictwem testowego adresu e-mail z linkiem), Google Mail umożliwi umieszczenie go w polu From. W przeciwnym razie może go upuścić i zamienić na Sender.

+0

Mam ustawienia 'gmail' jest ustawienie, aby zmienić pole' FROM'.To lepsze rozwiązanie, czyni bardziej profesjonalne.Jest lepiej odbierać e-mail z 'support @ my .company.com' niż 'support.my.company @ gmail.com' – Victor

+1

To był mój punkt w ostatnim akapicie. Jeśli dodałeś swój adres e-mail jako swój alternatywny adres w Gmailu, możesz umieścić go na polu" Od "w Również kod C#. W przeciwnym razie może zostać odrzucony, a w Gmailu nie możesz umieścić niczego w "Od", możesz wybrać tylko z listy potwierdzonych adresów.Jak widać z mojego cytowanego e-maila w odpowiedzi, Gmail poprawnie umieścił Od tego miejsca, ponieważ "dowolna poczta" była jednym z moich alternatywnych adresów. –

5

Używam tego samego do wysyłania wiadomości e-mail przy użyciu GMail jako usługi. Początkowo ustawiłem właściwość .From na "[email protected]", ale e-mail nadal przychodzi z zestawem nagłówka From na konto używane do uwierzytelniania.

obliczu tego problemu, użyłem właściwość ReplyToList (.ReplyToList.Add(MailAddress))) tak, że odbiorcy, że odpowiedź na komunikat wyśle ​​odpowiedź do konta e-mail innego niż „zautomatyzowany” jeden, którego używamy do wysyłania wiadomości wychodzących.

Edit:

Aby uzyskać więcej informacji, zobacz this thread on Google Groups. Ponadto, a related answer on Stack Overflow.

Powiązane problemy