Wysyłanie maila po SMTP

0

Próbuję wysłać mejla z gmaila, jednak dostaję błąd:
"Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia 74.125.77.109:465"

Kod:


            MailMessage message = new MailMessage();
            message.To.Add(emailTxt.Text);           //tu z text boxa pobierane
            message.Subject = "Raport błędów";
            message.From = new System.Net.Mail.MailAddress("[email protected]");
            message.Body = messageTxt;
            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 465);
            smtp.EnableSsl = true;
            smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "hasło");

Dane do konfiguracji wzięłam stąd: http://mail.google.com/support/bin/answer.py?answer=13287

Coś źle w konfiguracji...? Nie ten port...? Doprawdy nie wiem...

0

Telnetem nie ma problemu? Bo może problem jest gdzieś w firewallu czy czymś takim.

Dodatkowo:
Nie jestem pewien jak działa GMailowy TLS, ale...

The SmtpClient class only supports the SMTP Service Extension for Secure SMTP over Transport Layer Security as defined in RFC 3207. In this mode, the SMTP session begins on an unencrypted channel, then a STARTTLS command is issued by the client to the server to switch to secure communication using SSL. See RFC 3207 published by the Internet Engineering Task Force (IETF) for more information.

An alternate connection method is where an SSL session is established up front before any protocol commands are sent. This connection method is sometimes called SMTP/SSL, SMTP over SSL, or SMTPS and by default uses port 465. This alternate connection method using SSL is not currently supported.

Źródło: http://msdn.microsoft.com/en-[...]ail.smtpclient.enablessl.aspx

0

Telnetem też nie łączy... Eh, faktycznie może być kwestia firewalla.
Będzie trzeba poczekać do poniedziałku na adminów...

Próbowałam z resztą również takim kodem: http://stackoverflow.com/ques[...]ng-email-in-net-through-gmail
A że jest tam 84+, to raczej kod jest dobry ;)

Dzięki za hint.

0

port to 587 i koniecznie SSL
smtp.SecurityMode = SmtpSslSecurityMode.Explicit;

0

Działający przykład. A teraz moje pytanie chyba proste, gdzie powinien być umieszczony komunikat o poprawnym wysłaniu wiadomości, tak żeby pojawiał się dopiero wtedy gdy email na prawdę zostanie wysłany.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Windows.Forms;

namespace Poczta
{
    class Poczta
    {
        public void wyslij(string tresc)
        {

            SmtpClient smtpClient = new SmtpClient(); //tworzymy klienta smtp
            smtpClient.UseDefaultCredentials = false;
            smtpClient.EnableSsl = true;
            smtpClient.Port = 587;
            MailMessage message = new MailMessage();//tworzymy wiadomość
            MailAddress from = new MailAddress("[email protected]", "Vocabulary");//adres nadawcy i nazwa nadawcy

            message.From = from;
            message.To.Add("[email protected]");//adres odbiorcy
            message.Subject = "Błąd Vocabulary lub propozycja.";//temat wiadomości
            message.Body = tresc; //treść wiadomości
            smtpClient.Host = "smtp.gmail.com"; //host serwera
            smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "hasłoNadawcy");//nazwa nadawcy i hasło
            try
            {
                smtpClient.SendAsync(message, "[email protected]");//nazwa odbiorcy, wysyłamy wiadomość
                MessageBox.Show("Wiadomość została wysłana poprawnie.", "Komunikat");
            }
            catch (SmtpException ex)
            {

                throw new ApplicationException("Klient SMTP wywołał wyjątek." + ex.Message);

            }
        }
    }
}
0

Musisz obsłużyć zdarzenie SendCompleted klasy StmpClient. Zdarzenie zostanie wyrzucone gdy operacja asynchronicznego wysyłania maila zakończy się.

Pozdrawiam
Łukasz Gawron

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0