Alih-alih mengandalkan tuan rumah saya untuk mengirim email, saya lebih memilih mengirim pesan email menggunakan akun Gmail saya . Email adalah email yang dipersonalisasi untuk band yang saya mainkan di acara saya.
Apakah mungkin untuk melakukannya?
Alih-alih mengandalkan tuan rumah saya untuk mengirim email, saya lebih memilih mengirim pesan email menggunakan akun Gmail saya . Email adalah email yang dipersonalisasi untuk band yang saya mainkan di acara saya.
Apakah mungkin untuk melakukannya?
Jawaban:
Pastikan untuk menggunakan System.Net.Mail, bukan yang usang System.Web.Mail. Melakukan SSL dengan System.Web.Mailadalah kekacauan ekstensi hacky.
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) dengan something@gmail.comsebagai pengirim. Btw: smtp.gmail.comsecara otomatis menimpa alamat pengirim jika bukan milik Anda.
Jawaban di atas tidak bekerja. Anda harus mengatur DeliveryMethod = SmtpDeliveryMethod.Networkatau itu akan kembali dengan kesalahan " klien tidak diautentikasi ". Juga selalu merupakan ide bagus untuk membuat batas waktu.
Kode yang direvisi:
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);
}
Untuk jawaban lain agar berfungsi "dari server" pertama Nyalakan Akses untuk aplikasi yang kurang aman di akun gmail.
Sepertinya baru-baru ini google mengubah kebijakan keamanannya. Jawaban berperingkat teratas tidak lagi berfungsi, sampai Anda mengubah pengaturan akun Anda seperti dijelaskan di sini: https://support.google.com/accounts/answer/6010255?hl=id-GB
Pada Maret 2016, google mengubah lokasi pengaturan lagi!
Ini untuk mengirim email dengan lampiran .. Sederhana dan pendek ..
sumber: 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);
}
Google dapat memblokir upaya masuk dari beberapa aplikasi atau perangkat yang tidak menggunakan standar keamanan modern. Karena aplikasi dan perangkat ini lebih mudah untuk dibobol, memblokirnya membantu menjaga keamanan akun Anda.
Beberapa contoh aplikasi yang tidak mendukung standar keamanan terbaru meliputi:
Karena itu, Anda harus mengaktifkan Sign-In Kurang Aman di akun google Anda.
Setelah masuk ke akun google, buka:
https://myaccount.google.com/lesssecureapps
atau
https://www.google.com/settings/security/lesssecureapps
Di C #, Anda dapat menggunakan kode berikut:
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);
}
}
Agar saya berfungsi, saya harus mengaktifkan akun gmail saya sehingga memungkinkan aplikasi lain untuk mendapatkan akses. Ini dilakukan dengan "mengaktifkan aplikasi yang kurang aman" dan juga menggunakan tautan ini: https://accounts.google.com/b/0/DisplayUnlockCaptcha
Ini versi saya: " Kirim Email Dalam C # Menggunakan Gmail ".
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();
}
}
}
}
Saya harap kode ini akan berfungsi dengan baik. Anda bisa mencoba.
// 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);
Sertakan ini,
using System.Net.Mail;
Lalu,
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);
Sumber : Kirim email dalam ASP.NET C #
Di bawah ini adalah contoh kode kerja untuk mengirim email menggunakan C #, dalam contoh di bawah ini saya menggunakan server smtp google.
Kode ini cukup jelas, ganti email dan kata sandi dengan nilai email dan kata sandi Anda.
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);
}
Jika Anda ingin mengirim email latar belakang, silakan lakukan di bawah ini
public void SendEmail(string address, string subject, string message)
{
Thread threadSendMails;
threadSendMails = new Thread(delegate()
{
//Place your Code here
});
threadSendMails.IsBackground = true;
threadSendMails.Start();
}
dan tambahkan namespace
using System.Threading;
Satu tip! Periksa kotak masuk pengirim, mungkin Anda perlu mengizinkan aplikasi yang kurang aman. Lihat: https://www.google.com/settings/security/lesssecureapps
Coba ini,
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());
}
}
gunakan cara ini
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);
Jangan lupakan ini:
using System.Net;
using System.Net.Mail;
Untuk menghindari masalah keamanan di Gmail, Anda harus membuat kata sandi aplikasi terlebih dahulu dari pengaturan Gmail Anda dan Anda dapat menggunakan kata sandi ini alih-alih kata sandi asli untuk mengirim email bahkan jika Anda menggunakan verifikasi dua langkah.
Mengubah pengirim di email Gmail / Outlook.com:
Untuk mencegah spoofing - Gmail / Outlook.com tidak akan membiarkan Anda mengirim dari nama akun pengguna yang sewenang-wenang.
Jika Anda memiliki jumlah pengirim yang terbatas, Anda dapat mengikuti instruksi ini dan kemudian mengatur Frombidang ke alamat ini: Mengirim email dari alamat yang berbeda
Jika Anda ingin mengirim dari alamat email yang sewenang-wenang (seperti formulir umpan balik di situs web tempat pengguna memasukkan email mereka dan Anda tidak ingin mereka mengirim email langsung kepada Anda) tentang hal terbaik yang dapat Anda lakukan adalah ini:
msg.ReplyToList.Add(new System.Net.Mail.MailAddress(email, friendlyName));
Ini akan membiarkan Anda hanya menekan 'balas' di akun email Anda untuk membalas penggemar band Anda di halaman umpan balik, tetapi mereka tidak akan mendapatkan email Anda yang sebenarnya yang akan mengarah ke satu ton spam.
Jika Anda berada dalam lingkungan yang terkendali, ini berfungsi dengan baik, tetapi harap perhatikan bahwa saya telah melihat beberapa klien email mengirim ke alamat from bahkan ketika reply-to ditentukan (saya tidak tahu yang mana).
Saya memiliki masalah yang sama, tetapi diselesaikan dengan masuk ke pengaturan keamanan gmail dan Mengizinkan aplikasi Kurang Aman . Kode dari Domenic & Donny berfungsi, tetapi hanya jika Anda mengaktifkan pengaturan itu
Jika Anda masuk (ke Google), Anda dapat mengikuti tautan ini dan beralih "Aktifkan" untuk "Akses untuk aplikasi yang kurang aman"
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();
}
}
}
}
Berikut adalah salah satu metode untuk mengirim email dan mendapatkan kredensial dari web.config:
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;
}
}
Dan bagian yang sesuai di web.config:
<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>
Coba yang ini
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;
}
Masalahnya bagi saya adalah kata sandi saya memiliki "blackslash" hitam di dalamnya, yang saya salin disisipkan tanpa disadari akan menyebabkan masalah.
Menyalin dari jawaban lain , metode di atas berfungsi tetapi gmail selalu menggantikan email "from" dan "reply to" dengan akun gmail pengirim yang sebenarnya. namun ternyata ada pekerjaan di sekitar:
http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html
"3. Di Tab Akun, Klik tautan" Tambahkan alamat email lain yang Anda miliki "lalu verifikasi"
Atau mungkin ini
Pembaruan 3: Pembaca Derek Bennett mengatakan, "Solusinya adalah masuk ke Pengaturan gmail Anda: Akun dan" Jadikan default "akun selain akun gmail Anda. Ini akan menyebabkan gmail untuk menulis ulang bidang Dari dengan apa pun email akun default itu alamatnya adalah. "
Anda bisa mencoba Mailkit. Ini memberi Anda fungsionalitas yang lebih baik dan lebih maju untuk mengirim email. Anda dapat menemukan lebih banyak dari ini. Berikut ini adalah contohnya
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);
}