ইমেল প্রেরণের জন্য আমার হোস্টের উপর নির্ভর করার পরিবর্তে আমি আমার জিমেইল অ্যাকাউন্ট ব্যবহার করে ইমেল বার্তাগুলি প্রেরণের কথা ভাবছিলাম । ইমেলগুলি আমার শোতে আমি যে ব্যান্ডগুলি খেলি সেগুলিতে ব্যক্তিগতকৃত ইমেল।
এটা কি সম্ভব?
ইমেল প্রেরণের জন্য আমার হোস্টের উপর নির্ভর করার পরিবর্তে আমি আমার জিমেইল অ্যাকাউন্ট ব্যবহার করে ইমেল বার্তাগুলি প্রেরণের কথা ভাবছিলাম । ইমেলগুলি আমার শোতে আমি যে ব্যান্ডগুলি খেলি সেগুলিতে ব্যক্তিগতকৃত ইমেল।
এটা কি সম্ভব?
উত্তর:
নিশ্চিত ব্যবহার করতে হবে System.Net.Mail
, না অবচিত System.Web.Mail
। এসএসএল করা System.Web.Mail
হ্যাকি এক্সটেনশনের গুরুতর জগাখিচুড়ি।
using System.Net;
using System.Net.Mail;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
smtp.gmail.com
) ব্যবহার করলে আপনি সমস্যা পেতে পারেন something@gmail.com
। বিটিডাব্লু: smtp.gmail.com
প্রেরকের ঠিকানা যদি এটি না হয় তবে স্বয়ংক্রিয়ভাবে ওভাররাইট করে।
উপরের উত্তরটি কাজ করে না। আপনাকে সেট DeliveryMethod = SmtpDeliveryMethod.Network
করতে হবে অথবা এটি একটি " ক্লায়েন্ট প্রমাণীকৃত ছিল না " ত্রুটি নিয়ে ফিরে আসবে । এছাড়াও সময়সীমা নির্ধারণ করা সর্বদা একটি ভাল ধারণা।
সংশোধিত কোড:
using System.Net.Mail;
using System.Net;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@yahoo.com", "To Name");
const string fromPassword = "password";
const string subject = "test";
const string body = "Hey now!!";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
"একটি সার্ভার থেকে" কাজ করার জন্য অন্যান্য উত্তরের জন্য প্রথমে কম সুরক্ষিত অ্যাপ্লিকেশনগুলির জন্য অ্যাক্সেস চালু করুন জিমেইল অ্যাকাউন্টে ।
দেখে মনে হচ্ছে সম্প্রতি গুগল এটির নিরাপত্তা নীতি পরিবর্তন করেছে। উপরে বর্ণিত উত্তরটি আর কাজ করে না, যতক্ষণ না আপনি এখানে বর্ণিত হিসাবে নিজের অ্যাকাউন্ট সেটিংস পরিবর্তন করেন: https://support.google.com/accounts/answer/6010255?hl=en-GB
মার্চ ২০১ 2016 পর্যন্ত, গুগল আবার সেটিংসের অবস্থান পরিবর্তন করেছে!
এটি সংযুক্তি সহ ইমেল প্রেরণ করা .. সহজ এবং সংক্ষিপ্ত ..
উত্স: http://coding-issues.blogspot.in/2012/11/sending-email-with-attachments-from-c.html
using System.Net;
using System.Net.Mail;
public void email_send()
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("your mail@gmail.com");
mail.To.Add("to_mail@gmail.com");
mail.Subject = "Test Mail - 1";
mail.Body = "mail with attachment";
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment("c:/textfile.txt");
mail.Attachments.Add(attachment);
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("your mail@gmail.com", "your password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
গুগল এমন কিছু অ্যাপ্লিকেশন বা ডিভাইসগুলির সাইন ইন প্রয়াসকে অবরোধ করতে পারে যা আধুনিক সুরক্ষা মান ব্যবহার করে না। যেহেতু এই অ্যাপ্লিকেশনগুলি এবং ডিভাইসগুলি সহজেই ভাঙ্গতে সহজ হয় সেগুলি ব্লক করা আপনার অ্যাকাউন্টকে আরও নিরাপদ রাখতে সহায়তা করে।
সর্বশেষতম সুরক্ষা মানগুলিকে সমর্থন করে না এমন অ্যাপসের কয়েকটি উদাহরণ অন্তর্ভুক্ত:
অতএব, আপনাকে কম সুরক্ষিত সাইন-ইন সক্ষম করতে হবে আপনার গুগল অ্যাকাউন্টে ।
গুগল অ্যাকাউন্টে সাইন ইন করার পরে, এখানে যান:
https://myaccount.google.com/lesssecureapps
বা
https://www.google.com/settings/security/lesssecureapps
সি # তে, আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress("email@gmail.com");
mail.To.Add("somebody@domain.com");
mail.Subject = "Hello World";
mail.Body = "<h1>Hello</h1>";
mail.IsBodyHtml = true;
mail.Attachments.Add(new Attachment("C:\\file.zip"));
using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
{
smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
smtp.EnableSsl = true;
smtp.Send(mail);
}
}
আমার এটি কাজ করার জন্য, আমাকে আমার জিমেইল অ্যাকাউন্টটি সক্ষম করতে হয়েছিল যাতে অন্যান্য অ্যাপ্লিকেশনগুলির অ্যাক্সেস অর্জন সম্ভব হয়। এই "সক্ষম কম সুরক্ষিত অ্যাপ্লিকেশানের" সঙ্গে সম্পন্ন করা হয় এবং এছাড়াও এই লিঙ্কটি ব্যবহার করে: https://accounts.google.com/b/0/DisplayUnlockCaptcha
এখানে আমার সংস্করণটি দেওয়া হয়েছে: " জিমেইল ব্যবহার করে সি # তে ইমেল প্রেরণ করুন "।
using System;
using System.Net;
using System.Net.Mail;
namespace SendMailViaGmail
{
class Program
{
static void Main(string[] args)
{
//Specify senders gmail address
string SendersAddress = "Sendersaddress@gmail.com";
//Specify The Address You want to sent Email To(can be any valid email address)
string ReceiversAddress = "ReceiversAddress@yahoo.com";
//Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
const string SendersPassword = "Password";
//Write the subject of ur mail
const string subject = "Testing";
//Write the contents of your mail
const string body = "Hi This Is my Mail From Gmail";
try
{
//we will use Smtp client which allows us to send email using SMTP Protocol
//i have specified the properties of SmtpClient smtp within{}
//gmails smtp server name is smtp.gmail.com and port number is 587
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(SendersAddress, SendersPassword),
Timeout = 3000
};
//MailMessage represents a mail message
//it is 4 parameters(From,TO,subject,body)
MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
/*WE use smtp sever we specified above to send the message(MailMessage message)*/
smtp.Send(message);
Console.WriteLine("Message Sent Successfully");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
}
আমি আশা করি এই কোডটি ঠিকঠাকভাবে কাজ করবে। আপনি চেষ্টা করতে পারেন।
// Include this.
using System.Net.Mail;
string fromAddress = "xyz@gmail.com";
string mailPassword = "*****"; // Mail id password from where mail will be sent.
string messageBody = "Write the body of the message here.";
// Create smtp connection.
SmtpClient client = new SmtpClient();
client.Port = 587;//outgoing port for the mail.
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(fromAddress, mailPassword);
// Fill the mail form.
var send_mail = new MailMessage();
send_mail.IsBodyHtml = true;
//address from where mail will be sent.
send_mail.From = new MailAddress("from@gmail.com");
//address to which mail will be sent.
send_mail.To.Add(new MailAddress("to@example.com");
//subject of the mail.
send_mail.Subject = "put any subject here";
send_mail.Body = messageBody;
client.Send(send_mail);
এটি অন্তর্ভুক্ত করুন,
using System.Net.Mail;
এবং তারপর,
MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = Convert.ToInt16("587");
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","password");
client.EnableSsl = true;
client.Send(sendmsg);
সূত্র : এএসপি.নেট সি # তে ইমেল প্রেরণ করুন
নীচে সি # ব্যবহার করে একটি মেইলে প্রেরণের জন্য একটি নমুনা কার্যকারী কোড রয়েছে, নীচের উদাহরণে আমি গুগলের এসএমটিপি সার্ভারটি ব্যবহার করছি।
কোডটি বেশ স্ব ব্যাখ্যাযোগ্য, আপনার ইমেল এবং পাসওয়ার্ডের মানগুলির সাথে ইমেল এবং পাসওয়ার্ড প্রতিস্থাপন করুন।
public void SendEmail(string address, string subject, string message)
{
string email = "yrshaikh.mail@gmail.com";
string password = "put-your-GMAIL-password-here";
var loginInfo = new NetworkCredential(email, password);
var msg = new MailMessage();
var smtpClient = new SmtpClient("smtp.gmail.com", 587);
msg.From = new MailAddress(email);
msg.To.Add(new MailAddress(address));
msg.Subject = subject;
msg.Body = message;
msg.IsBodyHtml = true;
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = loginInfo;
smtpClient.Send(msg);
}
আপনি যদি পটভূমির ইমেল প্রেরণ করতে চান তবে নীচে দয়া করে করুন
public void SendEmail(string address, string subject, string message)
{
Thread threadSendMails;
threadSendMails = new Thread(delegate()
{
//Place your Code here
});
threadSendMails.IsBackground = true;
threadSendMails.Start();
}
এবং নেমস্পেস যুক্ত করুন
using System.Threading;
এক টিপ! প্রেরকের ইনবক্সটি পরীক্ষা করুন, সম্ভবত আপনার কম সুরক্ষিত অ্যাপ্লিকেশনগুলির অনুমতি প্রয়োজন। দেখুন: https://www.google.com/settings/security/lesssecureapps
এটা চেষ্টা কর,
private void button1_Click(object sender, EventArgs e)
{
try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("your_email_address@gmail.com");
mail.To.Add("to_address");
mail.Subject = "Test Mail";
mail.Body = "This is for testing SMTP mail from GMAIL";
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
MessageBox.Show("mail Send");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
এইভাবে ব্যবহার করুন
MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = Convert.ToInt32("587");
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","MyPassWord");
client.Send(sendmsg);
এটি ভুলবেন না:
using System.Net;
using System.Net.Mail;
জিমেইলে সুরক্ষার সমস্যাগুলি এড়াতে আপনার জিমেইল সেটিংস থেকে প্রথমে একটি অ্যাপ্লিকেশন পাসওয়ার্ড তৈরি করা উচিত এবং আপনি দুটি পদক্ষেপ যাচাইকরণ ব্যবহার করলেও ইমেল প্রেরণের জন্য সত্যিকারের পাসওয়ার্ডের পরিবর্তে আপনি এই পাসওয়ার্ডটি ব্যবহার করতে পারেন।
Gmail / আউটলুক.কম ইমেলটিতে প্রেরক পরিবর্তন করা হচ্ছে:
ছদ্মবেশ রোধ করতে - জিমেইল / আউটলুক.কম আপনাকে একটি স্বেচ্ছাসেবীর অ্যাকাউন্টের নাম থেকে প্রেরণ করতে দেবে না।
আপনার যদি সীমিত সংখ্যক প্রেরক থাকে তবে আপনি এই নির্দেশাবলী অনুসরণ করতে পারেন এবং তারপরে From
এই ঠিকানায় ক্ষেত্রটি সেট করতে পারেন : আলাদা ঠিকানা থেকে মেল প্রেরণ
আপনি যদি সেরা কোনও ইমেল ঠিকানা (যেমন কোনও ওয়েবসাইটের প্রতিক্রিয়া ফর্ম যেখানে ব্যবহারকারী তাদের ইমেল প্রবেশ করে এবং আপনি তাদের সরাসরি ইমেল করতে চান না) থেকে আপনি যদি পাঠাতে চান তবে আপনি যা করতে পারেন তা হ'ল:
msg.ReplyToList.Add(new System.Net.Mail.MailAddress(email, friendlyName));
প্রতিক্রিয়ার পৃষ্ঠায় আপনার ব্যান্ডের ফ্যানকে জবাব দেওয়ার জন্য এটি আপনাকে কেবল আপনার ইমেল অ্যাকাউন্টে 'জবাব' দেবে, তবে তারা আপনার প্রকৃত ইমেলটি পাবে না যা সম্ভবত এক টন স্প্যামের কারণ হতে পারে।
আপনি যদি একটি নিয়ন্ত্রিত পরিবেশে থাকেন তবে এটি দুর্দান্ত কাজ করে তবে দয়া করে নোট করুন যে আমি কিছু ইমেল ক্লায়েন্টগুলি উত্তরটি নির্দিষ্ট করার পরেও ঠিকানা থেকে প্রেরণ করতে দেখেছি (কোনটি আমি জানি না)।
আমার একই সমস্যা ছিল, তবে এটি জিমেইলের সুরক্ষা সেটিংসে গিয়ে কম সিকিউর অ্যাপ্লিকেশনগুলিকে অনুমতি দিয়ে সমাধান করা হয়েছিল । ডোমেনিক ও ডনির কোডটি কাজ করে তবে আপনি যদি সেটিংটি সক্ষম করে থাকেন তবেই
আপনি যদি সাইন ইন হন (গুগলে) আপনি এই লিঙ্কটি অনুসরণ করতে পারেন এবং " কম সুরক্ষিত অ্যাপ্লিকেশনগুলির জন্য অ্যাক্সেস " এর জন্য " চালু করুন" টগল করতে পারেন
using System;
using System.Net;
using System.Net.Mail;
namespace SendMailViaGmail
{
class Program
{
static void Main(string[] args)
{
//Specify senders gmail address
string SendersAddress = "Sendersaddress@gmail.com";
//Specify The Address You want to sent Email To(can be any valid email address)
string ReceiversAddress = "ReceiversAddress@yahoo.com";
//Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
const string SendersPassword = "Password";
//Write the subject of ur mail
const string subject = "Testing";
//Write the contents of your mail
const string body = "Hi This Is my Mail From Gmail";
try
{
//we will use Smtp client which allows us to send email using SMTP Protocol
//i have specified the properties of SmtpClient smtp within{}
//gmails smtp server name is smtp.gmail.com and port number is 587
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(SendersAddress, SendersPassword),
Timeout = 3000
};
//MailMessage represents a mail message
//it is 4 parameters(From,TO,subject,body)
MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
/*WE use smtp sever we specified above to send the message(MailMessage message)*/
smtp.Send(message);
Console.WriteLine("Message Sent Successfully");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
}
মেল প্রেরণ এবং ওয়েবকনফিগের শংসাপত্র পাওয়ার জন্য এখানে একটি পদ্ধতি রয়েছে:
public static string SendEmail(string To, string Subject, string Msg, bool bodyHtml = false, bool test = false, Stream AttachmentStream = null, string AttachmentType = null, string AttachmentFileName = null)
{
try
{
System.Net.Mail.MailMessage newMsg = new System.Net.Mail.MailMessage(System.Configuration.ConfigurationManager.AppSettings["mailCfg"], To, Subject, Msg);
newMsg.BodyEncoding = System.Text.Encoding.UTF8;
newMsg.HeadersEncoding = System.Text.Encoding.UTF8;
newMsg.SubjectEncoding = System.Text.Encoding.UTF8;
System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
if (AttachmentStream != null && AttachmentType != null && AttachmentFileName != null)
{
System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(AttachmentStream, AttachmentFileName);
System.Net.Mime.ContentDisposition disposition = attachment.ContentDisposition;
disposition.FileName = AttachmentFileName;
disposition.DispositionType = System.Net.Mime.DispositionTypeNames.Attachment;
newMsg.Attachments.Add(attachment);
}
if (test)
{
smtpClient.PickupDirectoryLocation = "C:\\TestEmail";
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
}
else
{
//smtpClient.EnableSsl = true;
}
newMsg.IsBodyHtml = bodyHtml;
smtpClient.Send(newMsg);
return SENT_OK;
}
catch (Exception ex)
{
return "Error: " + ex.Message
+ "<br/><br/>Inner Exception: "
+ ex.InnerException;
}
}
এবং ওয়েব.কমফিগ সম্পর্কিত বিভাগ:
<appSettings>
<add key="mailCfg" value="yourmail@example.com"/>
</appSettings>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="yourmail@example.com">
<network defaultCredentials="false" host="mail.exapmple.com" userName="yourmail@example.com" password="your_password" port="25"/>
</smtp>
</mailSettings>
</system.net>
আর একবার চেষ্টা কর
public static bool Send(string receiverEmail, string ReceiverName, string subject, string body)
{
MailMessage mailMessage = new MailMessage();
MailAddress mailAddress = new MailAddress("abc@gmail.com", "Sender Name"); // abc@gmail.com = input Sender Email Address
mailMessage.From = mailAddress;
mailAddress = new MailAddress(receiverEmail, ReceiverName);
mailMessage.To.Add(mailAddress);
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
SmtpClient mailSender = new SmtpClient("smtp.gmail.com", 587)
{
EnableSsl = true,
UseDefaultCredentials = false,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential("abc@gmail.com", "pass") // abc@gmail.com = input sender email address
//pass = sender email password
};
try
{
mailSender.Send(mailMessage);
return true;
}
catch (SmtpFailedRecipientException ex)
{
// Write the exception to a Log file.
}
catch (SmtpException ex)
{
// Write the exception to a Log file.
}
finally
{
mailSender = null;
mailMessage.Dispose();
}
return false;
}
আমার সমস্যাটি হ'ল আমার পাসওয়ার্ডটিতে একটি ব্ল্যাকস্ল্যাশ ছিল "copy" , যা আমি অনুধাবন না করে আটকানো অনুলিপি করেছিলাম যা সমস্যার সৃষ্টি করে।
অন্য উত্তর থেকে অনুলিপি করা , উপরোক্ত পদ্ধতিগুলি কাজ করে তবে gmail সর্বদা প্রকৃত প্রেরণকারী Gmail অ্যাকাউন্টের সাথে "থেকে" এবং "জবাব দিতে" ইমেলটি প্রতিস্থাপন করে। স্পষ্টতই এখানে প্রায় কাজ আছে:
http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html
"৩. অ্যাকাউন্টস ট্যাবে," আপনার নিজের অন্য ইমেল ঠিকানা যুক্ত করুন "তারপরে লিঙ্কটি ক্লিক করুন এবং এটি যাচাই করুন"
অথবা সম্ভবত এটি
3 আপডেট ঠিকানা হল."
আপনি চেষ্টা করতে পারেন Mailkit
। এটি আপনাকে মেল প্রেরণের জন্য আরও ভাল এবং অগ্রিম কার্যকারিতা দেয়। আপনি জানতে পারেন থেকে আরো এই এখানে একটি উদাহরণ
MimeMessage message = new MimeMessage();
message.From.Add(new MailboxAddress("FromName", "YOU_FROM_ADDRESS@gmail.com"));
message.To.Add(new MailboxAddress("ToName", "YOU_TO_ADDRESS@gmail.com"));
message.Subject = "MyEmailSubject";
message.Body = new TextPart("plain")
{
Text = @"MyEmailBodyOnlyTextPart"
};
using (var client = new SmtpClient())
{
client.Connect("SERVER", 25); // 25 is port you can change accordingly
// Note: since we don't have an OAuth2 token, disable
// the XOAUTH2 authentication mechanism.
client.AuthenticationMechanisms.Remove("XOAUTH2");
// Note: only needed if the SMTP server requires authentication
client.Authenticate("YOUR_USER_NAME", "YOUR_PASSWORD");
client.Send(message);
client.Disconnect(true);
}