PDA

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



i3ahaar
چهارشنبه 17 دی 1393, 23:12 عصر
با سلام. من از کد زیر برای ازسال ایمیل (ارسال به ایمیل هاست) استفاده میکنم ولی ارور زیر داده میشه :


Mailbox unavailable. The server response was: From domain must match authenticated domainMailbox unavailable. The server response was: From domain must match authenticated domain

اینم از کد :
SmtpClient MyMail = new SmtpClient();
MailMessage MyMsg = new MailMessage();
MyMsg.Subject = "Site-Contact";
MyMsg.To.Add(new MailAddress("info@mysite.com", "info"));
MyMsg.From = new MailAddress(txtEmail.Text, txtName.Text);
MyMsg.Body = txtBody.Text;
MyMsg.SubjectEncoding = Encoding.UTF8;
MyMsg.IsBodyHtml = true;
MyMail.Host = "mail.mysite.com";
MyMail.UseDefaultCredentials = false;
NetworkCredential MyCredentials = new NetworkCredential("email", "pass@");
MyMail.Credentials = MyCredentials;
MyMail.Send(MyMsg);
میشه راهنماییم کنید مشکل از کجاست؟ کدی که نوشتم اشتباهه؟

aminmousavi
چهارشنبه 17 دی 1393, 23:55 عصر
سلام دوست عزیز . بنده اینجوری استفاده میکنم و مشکلی هم نداره :


System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(Host, Port);
smtpClient.Credentials = new System.Net.NetworkCredential(Username, Password);
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = false;
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.From = new System.Net.Mail.MailAddress(From, FormTitle);
mail.To.Add(To);
mail.Subject = Subject;
mail.Body = body;
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
smtpClient.Send(mail);


پ.ن : در ضمن اون موقع پیغام خطا تون رو ندیدم ، الان که دیدم فکر میکنم پارامتر هایی که برای هاست تون میفرستین غلط هست ، اطاعات پورت ، هاست ، ایمیل ، پسورد رو درست وارد کردید ؟

keiv@n
پنج شنبه 18 دی 1393, 10:29 صبح
سلام دوست عزیز . بنده اینجوری استفاده میکنم و مشکلی هم نداره :


System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(Host, Port);
smtpClient.Credentials = new System.Net.NetworkCredential(Username, Password);
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = false;
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.From = new System.Net.Mail.MailAddress(From, FormTitle);
mail.To.Add(To);
mail.Subject = Subject;
mail.Body = body;
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
smtpClient.Send(mail);


پ.ن : در ضمن اون موقع پیغام خطا تون رو ندیدم ، الان که دیدم فکر میکنم پارامتر هایی که برای هاست تون میفرستین غلط هست ، اطاعات پورت ، هاست ، ایمیل ، پسورد رو درست وارد کردید ؟

اینم پاسخ کاملتر که validation هم داره :



<asp:Panel ID="Panel1" runat="server" DefaultButton="btnSubmit">
<p>
جهت ارسال ایمیل موارد زیر را پر کنید
</p>
<p>
نام شما:
<asp:RequiredFieldValidator ID="RequiredFieldValidator11" runat="server" ErrorMessage="*"
ControlToValidate="YourName" ValidationGroup="save" /><br />
<asp:TextBox ID="YourName" runat="server" Width="250px" /><br />
ایمیل شما:
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"
ControlToValidate="YourEmail" ValidationGroup="save" /><br />
<asp:TextBox ID="YourEmail" runat="server" Width="250px" />
<asp:RegularExpressionValidator runat="server" ID="RegularExpressionValidator23"
SetFocusOnError="true" Text="Example: username@gmail.com" ControlToValidate="YourEmail"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" Display="Dynamic"
ValidationGroup="save" /><br />
موضوع:
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*"
ControlToValidate="YourSubject" ValidationGroup="save" /><br />
<asp:TextBox ID="YourSubject" runat="server" Width="400px" /><br />
نظر شما:
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="*"
ControlToValidate="Comments" ValidationGroup="save" /><br />
<asp:TextBox ID="Comments" runat="server"
TextMode="MultiLine" Rows="10" Width="400px" />
</p>
<p>
<asp:Button ID="btnSubmit" runat="server" Text="Send"
OnClick="Button1_Click" ValidationGroup="save" />
</p>
</asp:Panel>
<p>
<asp:Label ID="DisplayMessage" runat="server" Visible="false" />
</p>


تنظیمات سمت سرور :



protected void SendMail()
{
// آدرس ایمیل فرستنده
var fromAddress = "kei0ne.s.fard@gmail.com";
// آدرس ایمیل دریافت کننده
var toAddress = YourEmail.Text.ToString();
// کلمه عبور ایمیل فرستنده
const string fromPassword = "k17692432";
string subject = YourSubject.Text.ToString();
string body = "From: " + YourName.Text + "\n";
body += "Email: " + YourEmail.Text + "\n";
body += "Subject: " + YourSubject.Text + "\n";
body += "Question: \n" + Comments.Text + "\n";
// تنظیمات smtp
var smtp = new System.Net.Mail.SmtpClient();
{
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;
}
// ارسال ایمیل
smtp.Send(fromAddress, toAddress, subject, body);
}


protected void Button1_Click(object sender, EventArgs e)
{
try
{
SendMail();
DisplayMessage.Text = "عبارتی که پس از ارسال موفقیت آمیز ایمیل نمایش داده می شود";
DisplayMessage.Visible = true;
YourSubject.Text = "";
YourEmail.Text = "";
YourName.Text = "";
Comments.Text = "";
}
catch (Exception) { }
}



اگر برنامه را اجرا کنیم به خطا بر می خوریم :

WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for ‘jquery’

راه حلش اضافه کردن دستورات زیر به فایل global.asax :


void Application_Start(object sender, EventArgs e)
{
ScriptManager.ScriptResourceMapping.AddDefinition("jquery",
new ScriptResourceDefinition
{
Path = "~/scripts/jquery-1.7.2.min.js",
DebugPath = "~/scripts/jquery-1.7.2.min.js",
CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.min.js",
CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.js"
});


}


حالا بدون مشکل می تونیم ایمیل از کاربرا دریافت کنیم و تمام validation های مورد نظرمونم هم قرار دارن

i3ahaar
شنبه 20 دی 1393, 00:04 صبح
کدی که شما فرمودید درسته و مشکلی نداره. مشکل اینجاست که وقتی در قسمت فرستنده اگه ایمیل رو وارد کنم

mail.From = newSystem.Net.Mail.MailAddress("test@example.com", FormTitle);
مشکلی نیست و ارسال صورت میگیره ولی وقتی از تکست باکس می خونم

mail.From = newSystem.Net.Mail.MailAddress(txtEmail.Text, FormTitle);
ایمیل ارسال نمیشه و ارور میده !!!



Mailbox unavailable. The server response was: From domain must match authenticated domainMailbox unavailable. The server response was: From domain must match authenticated domain

aminmousavi
شنبه 20 دی 1393, 02:41 صبح
خوب حتما دارین یکجایی خطایی انجام میدین !
شما قبلا از کد

mail.From = newSystem.Net.Mail.MailAddress(txtEmail.Text, FormTitle);

یک messagebox بزارین و مقدار txtEmail رو بخونین ببینین چیه ؟ قاعدتا اون زمان مقدار نادرستی دارین پاس میدین به متد .

i3ahaar
شنبه 20 دی 1393, 10:39 صبح
تست کردم و مقدار درستی به txtEmail ارسال میشه ولی ارور همچنان هست !!

بیتا حکمت
شنبه 20 دی 1393, 11:42 صبح
شاید داخل Text فضای خالی افتاده ، با تابع Trim حدف کنید ببنید بازم ارور می ده

-)parisa(-
چهارشنبه 06 آبان 1394, 20:53 عصر
سلام

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

این اررور
System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions

این هم یکی از نمونه کد ارسال ایمیل

MailMessage msg = new MailMessage();
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
try
{
msg.Subject = "Add Subject";
msg.Body = "Add Email Body Part";
msg.From = new MailAddress("pm.aghazade@gmail.com");
msg.To.Add("p_aghazade@yahoo.com");
msg.IsBodyHtml = true;
client.EnableSsl = false;
client.Host = "smtp.gmail.com";
System.Net.NetworkCredential basicauthenticationinfo = new System.Net.NetworkCredential("pm.aghazade@gmail.com", "password");
client.Port = int.Parse("587");
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = basicauthenticationinfo;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Send(msg);
}
catch (Exception ex)
{
throw;
}

pbm_soy
چهارشنبه 06 آبان 1394, 23:36 عصر
من کد شما را دقیق بررسی نکردم ولی شماره پورت ssl مربوط به سرویس ایمیل gmail ۵۸۷ است پس enablessl را true کنید!

مورد مهم اینه که تا مطمین بشی کلا فایروال و آنتی ویروس و internet security و هر نرم افزار امنیتی را غیرفعال کنید حتی بروی مودم و یا در شبکه همچین چیزی دارید غیرفعال کنید یعنی کلا فایروال را خاموش کنید سعی نکنید تنظیم کنید!

مورد مهمتر اینه که اگر از ssl برای ارتباط استفاده میکنید حتما باید تاریخ سیستم خودتون باید درست باشد اگر تاریخ غلط باشد کار نمیکند برای آزمایش کردن میتوانید یک صفحه https را باز کنید و اگر خطای امنیتی نمایش دهد برنامه ایمیل شما هم نمیتواند بصورت ssl به سرور ایمیل متصل شود.

درضمن میتوانستید این کد را بروی کامپیوتر دیگری هم آزمایش کنید
مورد دیگر این کد را در یک پروژه خالی فقط بایک باتن که داخلش همین کد را نوشته باشی آزمایش کن

-)parisa(-
پنج شنبه 07 آبان 1394, 18:01 عصر
من کد شما را دقیق بررسی نکردم ولی شماره پورت ssl مربوط به سرویس ایمیل gmail ۵۸۷ است پس enablessl را true کنید!




ممنون از راهنماییتون اما من از ssl استفاده نمیکنم طبق سرچی هم که کردم 587 برای tls و 465 برای ssl