ورود

View Full Version : با فرم ارسال ایمیل مشکل دارم



amirb55
دوشنبه 28 شهریور 1390, 09:45 صبح
سلام من یک فرم درست کردم برای ارسال ایمیل
کد قسمت ارسال به شرح زیر است


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
1 Dim mail As New MailMessage()
'set the addresses
2 mail.To.Add("hatami@mysite.com")
3 mail.From = New MailAddress("txtemail.Text")


'set the content
4 mail.Subject = txt.Text
5 mail.Body = "name : " & txtname.Text & "<br />subject : " & txtcomment.Text & "<br />" & "email : " & txtemail.Text & "<br />"
6 mail.Body = mail.Body & "<br /> Text: " & txtcomment.Text
7 mail.IsBodyHtml = True
'send the message
8 Dim smtp As New SmtpClient("mail.mysite.com")

9 smtp.Credentials = New NetworkCredential("form@mysite.com", "****")


Try
smtp.Send(mail)
LBLMesage.Text = "پیام شما با موفقیت ارسال شد"
txt.Text = ""
txtcomment.Text = ""
txtemail.Text = ""
txtname.Text = ""

Catch ex As Exception
LBLMesage.Text = ex.Message()

End Try
End Sub

در این فایل خط شماره 3 ارور میدهد
The parameter 'address' cannot be an empty string.
Parameter name: address
و ظاهرا نمیتواند محتویات فیلد زیر را ببیند
txtemail.Text
البته اگر به جای آن یک آدرس ایمیل بنویسم همه چیز درست کار میکندمثال



mail.From = New MailAddress("amirb55@yahoo.com")


البته مقدار txtemail.Text در خط 5 درست نمایش داده میشود اما در خط 3 ظاهرا دیده نمیشود!
لطفا راهنمایی بفرمایید چگونه مشکل را حل کنم؟

Alfred188
دوشنبه 28 شهریور 1390, 10:00 صبح
سلام،
خوب عزیزم این یه تیکه رو درست کن:
mail.From = New MailAddress("txtemail.Text")
to
mail.From = New MailAddress(txtemail.Text)

وقتی که txtemail.Text رو داخل کوتیشن می زاری در واقع داری به برنامه می گی که همین چیزی که نوشتم رو استفاده کن!

amirb55
دوشنبه 28 شهریور 1390, 10:38 صبح
سلام
ممنون از توجه شما حق با شماست وقتی گیومه باشد ارور دیگری میدهد که یعنی عبارت داخل گیومه فرمت مناسب ندارد.
بعد از اصلاح مورد فوق (حذف گیومه) پیغام زیر را میدهد
The parameter 'address' cannot be an empty string.
Parameter name: address
مفهوم پیغام که واضح است یعنی متغییر txtemail.text خالی است در حالیکه خالی نیست و در خط 5 مقدار موجود در آن به mailbody اضافه میشود اما در خط 3 ظاهرا این مقدار دیده نمیشود!

Alfred188
دوشنبه 28 شهریور 1390, 10:49 صبح
من خودم از این استفاده می کنم. بعضی سایت ها هستن که C# رو به VB بر می گردونن، چک کن ببین می تونی ازش استفاده کنی!

SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("me.2011@gmail.com", "**MyPassword***");
client.Port = 25;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
try
{
MailAddress
maFrom = new MailAddress("me.2011@gmail.com", "Mysite", Encoding.UTF8),
maTo = new MailAddress("you.2011@gmail.com", "CU" + TextBox3.Text, Encoding.UTF8);
MailMessage mmsg = new MailMessage(maFrom, maTo);
mmsg.Body = "";
mmsg.Body += "<html><body dir='rtl'>";
mmsg.Body += "<div align='center'><h2> MyOnline-Books </h2>"+ date1+"</div>";
mmsg.Body += "<br/><div align='center'> From:" + " me"+ "</div>";
mmsg.Body += "<br/><div align='center'> Subject:'" + TextBox3.Text + "'</div>";
mmsg.Body += "<div align='right' dir='rtl'> explanation:<h3>" + TextBox1.Text + "</h3></div>";
mmsg.Body += "<br/><div align='center'><h3> با تشکر </h3></div>";
mmsg.Body += "</body></html>";
mmsg.BodyEncoding = Encoding.UTF8;
mmsg.IsBodyHtml = true;
mmsg.Subject = "'Contact from mysite.com'";
mmsg.SubjectEncoding = Encoding.UTF8;
client.Send(mmsg);
//MessageBox.Show("Done");
}
catch (Exception ex)
{
//MessageBox.Show(ex.ToString(), ex.Message);
//throw;
}
Label6.Visible = true;
Label6.Text = "ارسال شد";
TextBox3.Text = "";
TextBox1.Text = "";

Alfred188
دوشنبه 28 شهریور 1390, 11:00 صبح
چیزی که هست وقتی برنامه تو خط 3 ارور می ده دیگه به خط 5 نمی رسه! پس نمی شه مطمئن بود که تو خط 5 درست کار می کنه!
_ مطمئن هستید که address اشاره به txtemail.text داره؟

amirb55
دوشنبه 28 شهریور 1390, 11:11 صبح
خب مساله اینه که شما در اینجا قسمت from رو از فرم نخوندید و دستی وارد کردید من میخوام از فرم بیاد که این مشکل پیش میاد اگر دستی بزنم که کار میکنه

amirb55
دوشنبه 28 شهریور 1390, 11:14 صبح
چیزی که هست وقتی برنامه تو خط 3 ارور می ده دیگه به خط 5 نمی رسه! پس نمی شه مطمئن بود که تو خط 5 درست کار می کنه!
_ مطمئن هستید که address اشاره به txtemail.text داره؟
ببین من اگه خط 3 داخل پرانتز یک آدرس ایمیل دستی وارد کنم مثلا بزنم "amirb55@yahoo.com" ایمیل ارسال میشه و خط 5 در این حالت درست کار میکنه یعنی محتویات txtemail.text در ایمیل ارسال شده دیده میشه.
در مورد سوال دوم درست متوجه نشدم چی پرسیدید اما از هیچی مطمئن نیستم!

Alfred188
دوشنبه 28 شهریور 1390, 13:01 عصر
پس شما يه كاري كنيد، از روش چك مرحله به مرحله استفاده كنيد.يعني بيايد و از قسمت اول برنامه رو چك كنيد. هم قسمت طراحي (اسم آبجكت ها) و هم قسمت كد هاتو دوباره بررسي كن آخه بارها پيش مياد كه يه اشكال كوچولو كل برنامه رو از كار ميندازه!الان كه سر كارم تا عصر كدت رو تو برنامه چك مي كنم! چاره اين جور برنامه ها اينه كه اونقدر بهشون گير بدي تا خودشون اشكالاتشون رو بهت بدن! ;)

Alfred188
دوشنبه 28 شهریور 1390, 13:50 عصر
باز هم سلام،
من کد شمارو چک کردم اشکالی که می گرفت این بود:
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. p9sm10475645fah.1
که اونهم از

smtp.Send(mail)

بود! که باز اونهم فکر کنم از تنظیمات smtp من بود. شما تو قسمت طراحی تکست باکس txtemail رو برش دار و دوباره بساز!

amirb55
دوشنبه 28 شهریور 1390, 18:25 عصر
سلام
واقعا ممنون که وقت گذاشتی و کد رو نگاه کردی ایرادی که شما اشاره کردید مربوط به تنظیمات smtp هست که من در کدی که اینجا گذاشتم تغییر دادم که اسم سایت معلوم نباشه !!! الان اون مورد حذف و اضافه کردن تست باکس رو هم انجام میدم
فعلا سرورم به مشکل خورده و کلا ایمیل نمیفرسته!!

amirb55
دوشنبه 28 شهریور 1390, 20:12 عصر
یه سوال عبارت آخر در خط اول (معرفی ساب روتین) چه کاری انجام میدهد؟
Handles Button1.Click
به نظر می آید با حذف آن مشکلات حل میشود و دیگر پیام خطا نمایش داده نمیشود!

Alfred188
دوشنبه 28 شهریور 1390, 21:02 عصر
نه اون بیچاره کاره ای نیست، معنیش این می شه:
This is a Private Subroutine. The name of the Sub is Button1_Click. The Event itself is at the end: Button1.Click. The Handles word means that this Subroutine can Handle the Click Event of Button1.

http://www.homeandlearn.co.uk/net/nets10p1.html

amirb55
سه شنبه 29 شهریور 1390, 00:00 صبح
ببینید نکته اینکه در در حالتی که مقدار تکست باکس رو میگذاشتم توی from ایمیل ارسال میشد اما صفحه خطای خالی بودن مقدار هم ظاهر میشد یا حذف عبارت Handle ... دیگه پیغام خطا ظاهر نمیشه !و ارسال هم که به خوبی انجام میشد!

Alfred188
سه شنبه 29 شهریور 1390, 18:43 عصر
يعني مي خواي بگي با اين حركت همه چي درست مي شه؟!:متعجب:
آگه جواب مي گيري خوب انجامش بده!

amirb55
یک شنبه 03 مهر 1390, 19:20 عصر
ببین تا اون موقع که اون بود ایمیل ارسال میشد و پیغام خطا هم نمایش داده میشد که برای سایت خوب نبود و بازدید کننده فکر میکرد مشکلی هست!
حالا برشداتم ایمیل ارسال میشه و صفحه خطا هم ظاهر نمیشه !!
فعلا اینجوری اوکی شده
ممنون از توجه شما