С# — отправка электронной почты с BlueHost

У меня есть BlueHost, и я не могу заставить его работать с С#. Я взял данные прямо со страницы, где я вхожу:

введите здесь описание изображения

Затем я использую этот код, чтобы попытаться отправить электронное письмо:

MailMessage message = new MailMessage
{
    From = new MailAddress("[email protected]", "[email protected]")
};
message.IsBodyHtml = false;
message.To.Add("[email protected]");
message.Subject = "my subject";
message.Body = "body";
message.Priority = MailPriority.Normal;
SmtpClient client = new SmtpClient
{
    Port = 465,
    Host = "box263.bluehost.com",
    EnableSsl = true,
    Credentials = new NetworkCredential("[email protected]", "myPassword"),
    Timeout = 10000,
    UseDefaultCredentials = false
};
client.Send(message);

Он выдает ошибку о том, что время ожидания истекло, хотя у него достаточно времени (10 секунд). Даже если я не ставлю тайм-аут, то он просто сидит какое-то время. Я также пробовал без SSL, отключив «EnableSsl», изменив порт на «26» и изменив хост на «mail.embirk.com», но это также не работает. Кроме того, это работает со сторонним программным обеспечением, таким как Microsoft Outlook и прочее. Любые идеи? Спасибо.

EDIT: я также связался со службой поддержки уровня II в Bluehost, и они сказали, что они тоже в тупике. Они сказали, что пробовали это с Thunderbird, и все сработало. Сказали, что может сертификат ищут?

РЕДАКТИРОВАТЬ 2:

Может ли помочь этот реестр Outlook. (это работает с Outlook, если он запущен).

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\OMI Account Manager\Accounts\[email protected]]
"DCEmail"=dword:00000002
"IMAP Server"="box263.bluehost.com"
"IMAP Port"=dword:000003e1
"SMTP Server"="box263.bluehost.com"
"SMTP Port"=dword:000001d1
"Connection Type"=dword:00000003
"IMAP User Name"="[email protected]"
"SMTP Display Name"="[email protected]"
"SMTP Email Address"="[email protected]"
"SMTP Reply To Email Address"="[email protected]"
"SMTP Organization Name"=""
"Account Name"="[email protected]"
"IMAP Timeout"=dword:0000003c
"SMTP Timeout"=dword:0000003c
"IMAP Secure Connection"=dword:00000001
"IMAP Skip Account"=dword:00000000
"IMAP Prompt for Password"=dword:00000001
"SMTP User Name"="[email protected]"
"SMTP Use Sicily"=dword:00000002
"SMTP Secure Connection"=dword:00000001
"SMTP Split Messages"=dword:00000000
"SMTP Prompt for Password"=dword:00000000
"IMAP Root Folder"=""
"IMAP Polling"=dword:00000001
"IMAP Poll All Folders"=dword:00000001
"IMAP Dirty"=dword:00000000

person hetelek    schedule 07.05.2012    source источник
comment
Не поймите неправильно, но вы пытались связаться со службой поддержки на bluehost?   -  person MilkyWayJoe    schedule 07.05.2012
comment
Да, я связался со службой поддержки уровня II в Bluehost, и они сказали, что тоже в тупике. Они сказали, что пробовали это с Thunderbird, и все сработало. Сказали, что может сертификат ищут?   -  person hetelek    schedule 07.05.2012
comment
Цитата из BH: Bluehost предоставляет бесплатный сертификат Shared SSL, доступный для всех учетных записей, находящихся на общем IP-адресе. Для получения дополнительной информации об общем сертификате SSL -› my.bluehost.com/cgi/ справка/473   -  person MilkyWayJoe    schedule 07.05.2012
comment
Я просто хотел уточнить один момент. Когда вы говорите, что он работает с другими почтовыми клиентами, вы имеете в виду, что он работает с box263.bluehost.com с вашего локального компьютера или с другими почтовыми клиентами, работающими на вашем сервере?   -  person AndrewR    schedule 08.05.2012
comment
Вы используете объект NetMail или WebMail?   -  person Prisoner ZERO    schedule 13.06.2015
comment
У вас это сработало? У меня тоже проблемы.   -  person Prisoner ZERO    schedule 13.06.2015
comment
Сегодня у меня была такая же проблема: SMTP на порту 465 отлично работает в Python, но время ожидания истекает с C#. Исправление для меня состояло в том, чтобы использовать порт 587 и использовать boxXXX.bluehost.com в качестве хоста вместо mail.mydomain.com, как это делает OP в своем вопросе.   -  person Alden    schedule 21.02.2017


Ответы (1)


Я бы попытался объявить учетные данные вне клиентского блока и назначить их учетным данным клиента.

Вообще избавьтесь от блока.

NetworkCredential myCred = new NetworkCredential("xxxxxxxx", "xxxxxxxx");


client.Credentials = myCred;
client.port = 465,
client.Host = "box263.bluehost.com",
client.EnableSsl = true,
client.Credentials = new NetworkCredential("[email protected]", "myPassword"),
client.Timeout = 10000,
client.UseDefaultCredentials = false
person Internet Engineer    schedule 07.05.2012
comment
Это не имеет большого смысла, поскольку вы сначала устанавливаете учетные данные, а затем снова устанавливаете их... - person hetelek; 08.05.2012
comment
Таким образом, NetworkCredential является частью system.net, а client.Credentials — частью System.Net.Mail. Два отдельных объекта. Вы создаете экземпляр NetworkCredential, а затем назначаете его сообщению. Это не то же самое, что дважды установить учетные данные. - person Internet Engineer; 08.05.2012
comment
в тот момент, когда вы устанавливаете UseDefaultCredentials, он стирает любое значение в свойстве Credentials. Таким образом, вы должны установить учетные данные ПОСЛЕ того, как вы установили это свойство. - person Prisoner ZERO; 13.06.2015