PDA

View Full Version : سوال: ارسال ایمیل



micro_bhk
چهارشنبه 07 دی 1390, 13:36 عصر
با عرض سلام و خسته نباشید

من برای ارسال ایمیل از دوتا تابع پایین توی یکی از سایتهای مشتریها استفاده میکنم



public int sendMail(string email, string subject, string response)
{
try
{

string yourEmail = "Email Address";
CDO.Message message = new CDO.Message();
CDO.IConfiguration configuration = message.Configuration;
ADODB.Fields fields = configuration.Fields;
ADODB.Field field = fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"];
field.Value = "SMTP Server";

field = fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"];
field.Value = 25;

field = fields["http://schemas.microsoft.com/cdo/configuration/sendusing"];
field.Value = CDO.CdoSendUsing.cdoSendUsingPort;

field = fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"];
field.Value = CDO.CdoProtocolsAuthentication.cdoBasic;

field = fields["http://schemas.microsoft.com/cdo/configuration/sendusername"];
field.Value = yourEmail;

field = fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"];
field.Value = "";

field = fields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"];
field.Value = "true";

fields.Update();
message.From = "عنوان...<" + yourEmail + ">";
message.To = email;
message.Subject = subject;
message.HTMLBody = "<html><body>" + response + "</body></html>";
message.HTMLBodyPart.Charset = "utf-8";
message.Send();
return 1;
}
catch (Exception e)
{
// ERR
return 0;
}
}

public int sendMail2(string email, string subject, string response)
{
try
{
string response2 = "<html><body>" + response + "</body></html>";
MailAddress froAdd = new MailAddress("Email Address", "آموزش");
MailMessage mailObj = new MailMessage(froAdd, new MailAddress(email));
mailObj.Subject = subject;
mailObj.Body = response2;
mailObj.IsBodyHtml = true;
mailObj.BodyEncoding = Encoding.UTF8;
SmtpClient SMTPServer = new SmtpClient("SMTP Server", 25);
SMTPServer.EnableSsl = true;
SMTPServer.UseDefaultCredentials = false;
SMTPServer.Credentials = new System.Net.NetworkCredential("UserName", "Pass");
SMTPServer.Send(mailObj);
return 1;
}
catch (Exception e)
{
// ERR
return 0;
}
}





حالا اومدن یه ایمیل ساختن تو شبکه خودشون که بدون User و Pass هستش. ولی تو این حالت ایمیل ارسال نمیشه

و تستهایی که میگیرن این نتایج رو میده:




Please, send them developer to our setting:
web.conf
<system.net>
<mailSettings>
<smtp from="Email Address">
<network defaultCredentials="false" host="SMTP Server" password="" port="25" userName="" />
</smtp>
</mailSettings>
</system.net>

mail server logs (ralay relay.forextime.dmz.dom):
Dec 27 07:20:06 relay postfix/smtpd[31731]: connect from unknown[10.25.10.181]
Dec 27 07:20:25 relay postfix/smtpd[31731]: disconnect from unknown[10.25.10.181]
Dec 27 13:24:31 relay postfix/smtpd[81525]: connect from unknown[10.25.10.181]
Dec 27 13:24:31 relay postfix/smtpd[81525]: lost connection after EHLO from unknown[10.25.10.181]
Dec 27 13:24:31 relay postfix/smtpd[81525]: disconnect from unknown[10.25.10.181]
Dec 27 13:25:43 relay postfix/smtpd[815
Meisam Ahmadi: Dec 27 13:25:43 relay postfix/smtpd[81525]: connect from unknown[10.25.10.181]
Dec 27 13:25:43 relay postfix/smtpd[81525]: lost connection after EHLO from unknown[10.25.10.181]
Dec 27 13:25:43 relay postfix/smtpd[81525]: disconnect from unknown[10.25.10.181]
Dec 27 13:27:45 relay postfix/smtpd[81525]: connect from unknown[10.25.10.181]
Dec 27 13:27:45 relay postfix/smtpd[81525]: lost connection after EHLO from unknown[10.25.10.181]
Dec 27 13:27:45 relay postfix/smtpd[81525]: disconnect from unknown[10.25.10.181]






بعد اومدم که قسمت یوزر و پسورد رو غیر فعال کردم که این نتیجه رو اعلام کردن:




it does not send email

lost connection after EHLO from vs-pr1.dmz.dom[10.25.10.181]







میخواستم بدونم که چه تغییراتی رو باید بدم تا بتونم یه ایمیل smtp+ssl بتونم بفرستم بدون نیاز به User و Pass.
تنظیمات مربوطه رو SMTP Server شون اعمال شده.
یه مشکلیم که دارم، خودم نمیتونم چک کنم، چون فقط رو رنج IP های خودشون کار میکنه، نمیتونم تست کنم و باید خودم اون حالت رو شبیه سازی کنم.

دوستان اگه میتونن راهنمایی کنن.

با تشکر

micro_bhk
جمعه 09 دی 1390, 02:15 صبح
ok شد



public int sendMail(string email, string subject, string response)
{
try
{
string mailServer = ConfigurationManager.AppSettings.Get("MyMailServer");
string port = ConfigurationManager.AppSettings.Get("MyMailServerPort");
string from = ConfigurationManager.AppSettings.Get("MyEmailAddress");
string userName = ConfigurationManager.AppSettings.Get("MyUserName");
string password = ConfigurationManager.AppSettings.Get("MyPassword");
string ssl = ConfigurationManager.AppSettings.Get("IsSSL");

System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage();
mail.To = email.Trim();
mail.From = from.Trim();
mail.Subject = subject;
mail.Body = response;
mail.BodyFormat = MailFormat.Html;
mail.BodyEncoding = Encoding.UTF8;

mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "2");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName);
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password);
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", mailServer.Trim());
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", port.Trim());
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", ssl);
SmtpMail.SmtpServer = mailServer.Trim();
SmtpMail.Send(mail);

return 1;
}
catch
{
return 0;
}
}



تنظیمات web.config



<appSettings>
<add key="MyMailServer" value="SMTP Server"/>
<add key="MyMailServerPort" value="25"/>
<add key="MyEmailAddress" value="Email Address"/>
<add key="MyUserName" value="User Name"/>
<add key="MyPassword" value="Password"/>
<add key="IsSSL" value="false"/>
</appSettings>