PDA

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



sepehrforough
سه شنبه 02 اردیبهشت 1393, 18:19 عصر
سوالم اینه ، که چه طوری میتونم هر ایمیل رو تو جداول اس کیو ال ذخیره کنم؟

r_s1389@yahoo.com
سه شنبه 02 اردیبهشت 1393, 18:32 عصر
خوب اگر تو ارسال ایمیل مشکل داری این کمکت میکنه

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void btnSend_Click(object sender, EventArgs e)
{
SmtpClient obj = new SmtpClient();

MailMessage MailMsg = new MailMessage();

MailMsg.To.Clear();

MailMsg.To.Add(new MailAddress(txtTo.Text));
MailMsg.From = new MailAddress("ramin.sahandi@yahoo.com");
MailMsg.Subject = txtSubject.Text;
MailMsg.BodyEncoding = System.Text.Encoding.UTF8;
MailMsg.IsBodyHtml = true;
obj.Host = "smtp.mail.yahoo.com";

System.Net.NetworkCredential basicAuthenticaionInfo = new System.Net.NetworkCredential("ramin.sahandi@yahoo.com", "00000000000000");

obj.UseDefaultCredentials = false;

obj.Credentials = basicAuthenticaionInfo;

MailMsg.Body = txtMail.Text;
MailMsg.IsBodyHtml = true;
try
{
obj.Send(MailMsg);
lblMsg.Text = "Mail Send !";
}
catch ( Exception ex )
{
lblMsg.Text = ex.ToString();
}

}
}


و برای ذخیره در اس کیول از این استفاده کن

SqlConnection con = new SqlConnection("data source=(local);initial catalog=db;integrated security=true;");
SqlCommand cmd = new SqlCommand("insert into T2 (name,fname) values (@name,@fname)", con);
cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue("@name", textBox1.Text);
cmd.Parameters.AddWithValue("@fname", textBox2.Text);

con.Open();
cmd.ExecuteNonQuery();
con.Close();

sepehrforough
سه شنبه 02 اردیبهشت 1393, 18:42 عصر
مرسی ، ولی من واسه ارسال ایمیل گروهی وذخیره اینکه کدوم ایمیل داره به کدوم کاربرا ارسال میشه مساله دارم
،



یعنی دو تا جدول میخوام داشته باشم که اینطورین

Email:
که شامل فیلدای زیزه:
1-Id
2-subject
3-content
4-fromuser


و دومین جدول ،

1-EmailId
2-userId

میشه اینو راهنماییم کنید؟میخوام ایمیل گیرنده ها متفاوت باشه که از روز یوزر آیدی به ایمیلشون دسترسی پیدا میکنه ، میشه بگید هنگام ارسال چه طوری تو ان دوتا جدول ذخیره کنم از تو فرم ایمیلم؟ممثلا اگه تعدا گیرنده هام بیشتر از یکی بود ، چه طوری تو جدول بگم که ایمیل شماره یک به 3 تا یوزر فرستاده شده؟

sepehrforough
سه شنبه 02 اردیبهشت 1393, 18:57 عصر
خواهشا میشه بگید؟

majidnazari65
سه شنبه 02 اردیبهشت 1393, 19:44 عصر
در کل برای چیزی که میخوای اول توی یه صفحه اطلاعات جدول ایمیلت رو ذخیره کن.
دوم باید یه صفحه درست کنی برای ارسال ایمیل، توی این صفحه باید id ایمیلی که میخوای ارسال بشه رو داشته باشی (مثلا از طریق کوئری استرینگ)
و همچنین در همین صفحه به هر نحوی که میتونی لیستی از user_id کاربرانی که میخوای براشون ایمیل ارسال بشه، باید ایجاد کنی.
حالا از طریق این لیست یکی یکی به ایمیل کاربران ایمیل ارسال بشه و اگر ارسال موفق بود id ایمیل و user_id که در اختیار داری در جدول دوم درج کن.

salmah
سه شنبه 02 اردیبهشت 1393, 22:34 عصر
ببخشید اگر امکان داره میشه کد مربوط به ارسال ایمیل را توضیح بدید


خوب اگر تو ارسال ایمیل مشکل داری این کمکت میکنه

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void btnSend_Click(object sender, EventArgs e)
{
SmtpClient obj = new SmtpClient();

MailMessage MailMsg = new MailMessage();

MailMsg.To.Clear();

MailMsg.To.Add(new MailAddress(txtTo.Text));
MailMsg.From = new MailAddress("ramin.sahandi@yahoo.com");
MailMsg.Subject = txtSubject.Text;
MailMsg.BodyEncoding = System.Text.Encoding.UTF8;
MailMsg.IsBodyHtml = true;
obj.Host = "smtp.mail.yahoo.com";

System.Net.NetworkCredential basicAuthenticaionInfo = new System.Net.NetworkCredential("ramin.sahandi@yahoo.com", "00000000000000");

obj.UseDefaultCredentials = false;

obj.Credentials = basicAuthenticaionInfo;

MailMsg.Body = txtMail.Text;
MailMsg.IsBodyHtml = true;
try
{
obj.Send(MailMsg);
lblMsg.Text = "Mail Send !";
}
catch ( Exception ex )
{
lblMsg.Text = ex.ToString();
}

}
}


و برای ذخیره در اس کیول از این استفاده کن

SqlConnection con = new SqlConnection("data source=(local);initial catalog=db;integrated security=true;");
SqlCommand cmd = new SqlCommand("insert into T2 (name,fname) values (@name,@fname)", con);
cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue("@name", textBox1.Text);
cmd.Parameters.AddWithValue("@fname", textBox2.Text);

con.Open();
cmd.ExecuteNonQuery();
con.Close();

sepehrforough
چهارشنبه 03 اردیبهشت 1393, 09:04 صبح
در کل برای چیزی که میخوای اول توی یه صفحه اطلاعات جدول ایمیلت رو ذخیره کن.
دوم باید یه صفحه درست کنی برای ارسال ایمیل، توی این صفحه باید id ایمیلی که میخوای ارسال بشه رو داشته باشی (مثلا از طریق کوئری استرینگ)
و همچنین در همین صفحه به هر نحوی که میتونی لیستی از user_id کاربرانی که میخوای براشون ایمیل ارسال بشه، باید ایجاد کنی.
حالا از طریق این لیست یکی یکی به ایمیل کاربران ایمیل ارسال بشه و اگر ارسال موفق بود id ایمیل و user_id که در اختیار داری در جدول دوم درج کن.
















میشه راهنماییم کنی با چه دستوری تو همین صفحه آی دی رو بگیرم؟ و اینکه این آیدی گرفتن باید بعد از ارسال ایمیل باشه ؟

majidnazari65
چهارشنبه 03 اردیبهشت 1393, 10:17 صبح
با توجه به نیازت باید این مراحل رو طی کنی:
1- صفحه لیست ایمیلها emails.aspx
تو این صفحه اطلاعات رو از جدول اول میگیری و توی یه لیست نمایش میدی. ه ردیف لیست دارای لینکی هست که اون را به صفحه ارسال ایمیل (sendmail.aspx) همراه با آی دی هدایت میکنه. مثلا اگر یه رکورد توی لیست id برابر با 5 داشته باشه آدرس لینکش باید به این صورت باشه: sendmail.aspx?id=5
2- صفحه اضافه کردن ایمیل addemail.aspx
تو این صفحه اطلاعات رو میگیری و توی جدول اول ذخیره میکنی.
3- صفحه ارسال ایمیل sendmail.aspx
به این صفحه همیشه یک مقدار id پاس داده میشه (مثل sendmail.aspx?id=5) بنابراین باید این مقدار id رو توسط دستور زیر توی رویداد Page_load پیدا کنی:

strID = Request.QueryString("id")
If String.IsNullOrEmpty(strID) Then
Exit Sub
End If
intID = Convert.ToInt32(strID)


خب الان id ایملی که میخوای ارسال بشه رو داری. اطلاعاتش رو میتونی از جدول بکشی بیرون.
تو این صفحه یه Button داری که روش کلیک میکنی ایمیل ارسال میشه. توی این Button قبل از ارسال ایمیل لیستی از کاربران رو از جدول مربوط به خودشون میخونی که شامل ایمیل و id کاربر هست. تابع یا کلاسی که برای ارسال ایمیل تعریف کردی رو اینجا فراخوانی میکنی و در صورت ارسال موفق intID و id کاربر رو درجدول دومت ذخیره میکنی.


باید دقت کنی که در هر مرحله تعداد ایمیلهایی که ارسال میشه محدود باشن.

sepehrforough
چهارشنبه 03 اردیبهشت 1393, 11:16 صبح
در کل برای چیزی که میخوای اول توی یه صفحه اطلاعات جدول ایمیلت رو ذخیره کن.
دوم باید یه صفحه درست کنی برای ارسال ایمیل، توی این صفحه باید id ایمیلی که میخوای ارسال بشه رو داشته باشی (مثلا از طریق کوئری استرینگ)
و همچنین در همین صفحه به هر نحوی که میتونی لیستی از user_id کاربرانی که میخوای براشون ایمیل ارسال بشه، باید ایجاد کنی.
حالا از طریق این لیست یکی یکی به ایمیل کاربران ایمیل ارسال بشه و اگر ارسال موفق بود id ایمیل و user_id که در اختیار داری در جدول دوم درج کن.


خیلی ممنونم ، اینو امتحان میکنم ،واقعا مرسی از توضیحتون

haamidd
پنج شنبه 04 اردیبهشت 1393, 10:46 صبح
خوب اگر تو ارسال ایمیل مشکل داری این کمکت میکنه

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void btnSend_Click(object sender, EventArgs e)
{
SmtpClient obj = new SmtpClient();

MailMessage MailMsg = new MailMessage();

MailMsg.To.Clear();

MailMsg.To.Add(new MailAddress(txtTo.Text));
MailMsg.From = new MailAddress("ramin.sahandi@yahoo.com");
MailMsg.Subject = txtSubject.Text;
MailMsg.BodyEncoding = System.Text.Encoding.UTF8;
MailMsg.IsBodyHtml = true;
obj.Host = "smtp.mail.yahoo.com";

System.Net.NetworkCredential basicAuthenticaionInfo = new System.Net.NetworkCredential("ramin.sahandi@yahoo.com", "00000000000000");

obj.UseDefaultCredentials = false;

obj.Credentials = basicAuthenticaionInfo;

MailMsg.Body = txtMail.Text;
MailMsg.IsBodyHtml = true;
try
{
obj.Send(MailMsg);
lblMsg.Text = "Mail Send !";
}
catch ( Exception ex )
{
lblMsg.Text = ex.ToString();
}

}
}


و برای ذخیره در اس کیول از این استفاده کن

SqlConnection con = new SqlConnection("data source=(local);initial catalog=db;integrated security=true;");
SqlCommand cmd = new SqlCommand("insert into T2 (name,fname) values (@name,@fname)", con);
cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue("@name", textBox1.Text);
cmd.Parameters.AddWithValue("@fname", textBox2.Text);

con.Open();
cmd.ExecuteNonQuery();
con.Close();





دوست عزیز من از این کدها استفاده کردم ولی ارور گرفت!


System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.1 Authentication required at System.Net.Mail.MailCommand.CheckResponse(SmtpStat usCode statusCode, String response) at System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, String from) at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception) at System.Net.Mail.SmtpClient.Send(MailMessage message) at wp_plugin1.admin.contact_message_response.send_res ponse_Click(Object sender, EventArgs e) in C:\Documents and Settings\aZkbar\my documents\visual studio 2010\Projects\wp-plugin1\wp-plugin1\admin\contact-message-response.aspx.cs:line 51







دوستان لطفا راهنماییم کنید
ممنون

majidnazari65
پنج شنبه 04 اردیبهشت 1393, 12:40 عصر
بعد از خط obj.Host خط زیر رو هم اضافه کن:
obj.EnableSsl = true;