2014-10-28 4 views
1

это резюме моей заявки: Я сделал это приложение в C# с использованием форм Windows, все прошло хорошо, пока я не добавил форму входа (с 2 текстовыми полями для электронной почты и пароля), что позволяет мне войти в систему с любыми электронными письмами ... чтобы каждый мог использовать это приложение для отправки писем. Итак, сначала появится форма входа в систему, где мне нужно ввести адрес электронной почты и пароль, а после нажатия кнопки «Login» появится моя основная форма.Отправить письмо на gmail с SMTP

Это мой код:

код для входа в форме:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using SendEmail.Classes; 
namespace SendEmail 
{ 
    public partial class Login : Form 
    { 
     public static string tb1; 
     public static string tb2; 

     public Login() 
     { 
      InitializeComponent(); 
      textBoxPassword.PasswordChar = '*'; 
     } 

     private void btnLogin_Click(object sender, EventArgs e) 
     { 
      Form1 form1 = new Form1(); 
      tb1 = textBoxEmail.Text; 
      tb2 = textBoxPassword.Text; 
      if (textBoxEmail != null && textBoxPassword != null) 
      { 
       //I use email and pass to take string values and put them into my main form, where I need to specify user's username and password 
       form1.email = tb1; 
       form1.pass = tb2; 
       form1.Show(); 
      } 
     } 
    } 
} 

Код для Form1 (главная форма):

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Net.Mail; 
using System.Text.RegularExpressions; 
using SendEmail.Classes; 

namespace SendEmail 
{ 
    public partial class Form1 : DevExpress.XtraEditors.XtraForm 
    { 
     User user = new User(); 
     public string email; 
     public string pass; 
     public Form1() 
     { 
      InitializeComponent(); 
      DevExpress.Skins.SkinManager.EnableFormSkins(); 
     } 
     private void btnSend_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       //Error reports 
       #region Error Reports 
       Regex RX = new Regex("^[a-zA-Z0-9]{1,20}@[a-zA-Z0-9]{1,20}.[a-zA-Z]{2,3}$"); 
       if (!RX.IsMatch(textBoxTo.Text)) 
       { 
        errorProviderEmail.SetError(textBoxTo, "Email format is not correct"); 
        return; 
       } 
       if (textBoxSubject.Text == string.Empty) 
       { 
        errorProviderEmail.SetError(textBoxSubject, "Enter a subject"); 
        return; 
       } 
       #endregion 

       MailMessage mail = new MailMessage(); 
       SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com", 587); 
       //System.Net.NetworkCredential auth = new System.Net.NetworkCredential(); 
       mail.From = new MailAddress(email); 
       mail.To.Add(textBoxTo.Text); 
       mail.Subject = textBoxSubject.Text; 
       mail.Body = richText.Text; 

       SmtpServer.Credentials = new System.Net.NetworkCredential(\*here I need the text from textBoxEmail (Login form) :*/ email, \*here I need the text from textBoxPassword (Login form) */ pass); 
       SmtpServer.EnableSsl = true; 

       #region Attachments 
       Attachment data = new Attachment(textBoxAttachment.Text); 
       Attachment data2 = new Attachment(textBoxAttachment2.Text); 
       Attachment data3 = new Attachment(textBoxAttachment3.Text); 
       mail.Attachments.Add(data); 
       mail.Attachments.Add(data2); 
       mail.Attachments.Add(data3); 
       #endregion 

       SmtpServer.Send(mail); 
       MessageBox.Show("mail Send"); 
       Close(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.ToString()); 
      } 
     } 

     private void textBoxTo_TextChanged(object sender, EventArgs e) 
     { 
      errorProviderEmail.Clear(); 
     } 

     private void textBoxSubject_TextChanged(object sender, EventArgs e) 
     { 
      errorProviderEmail.Clear(); 
     } 

     private void buttonUpload_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog dlg = new OpenFileDialog(); 
      if (dlg.ShowDialog() == DialogResult.OK) 
      { 
       textBoxAttachment.Text = dlg.FileName.ToString(); 
      } 
     } 

     private void buttonUpload2_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog dlg = new OpenFileDialog(); 
      if (dlg.ShowDialog() == DialogResult.OK) 
      { 
       textBoxAttachment2.Text = dlg.FileName.ToString(); 
      } 
     } 

     private void buttonAttachment3_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog dlg = new OpenFileDialog(); 
      if (dlg.ShowDialog() == DialogResult.OK) 
      { 
       textBoxAttachment3.Text = dlg.FileName.ToString(); 
      } 
     } 
    } 

Проблема заключается в том, что когда я делаю отладки , это бросает мне исключение: «Параметр« fileName »не может быть пустой строкой», поэтому я думаю, что моя строка электронной почты не взяла текст из textBoxEmail ...

Надеюсь, что я четко определил свою проблему: D Было проще, если бы я мог вставлять картинки в свою программу.

+2

Используйте свой отладчик. Какая строка бросает эту ошибку? Почему существует пустая строка? 'fileName' не звучит как электронная почта для меня, вы уверены, что это не строки, которые прикрепляют файлы к электронной почте, которые бросают ошибку? Вы собираетесь каждый раз прикладывать три файла? Если у вас нет чего-то во всех текстовых полях вашего приложения, вы получите сообщение об ошибке ... –

+0

Это моя ошибка: {«Параметр« имя_файла »не может быть пустой строкой. \ R \ nParameter name: fileName"} – Valeriu92

+0

По-видимому, один или несколько «textBoxAttachment.Text» vars пуст. Вам нужно проверить это, прежде чем создавать объекты «Вложения». –

ответ

0

Я буду предполагать, что одно из Attachments fileName является пустой строкой и из-за этого вызывается это исключение.

 if(!string.IsNullOrEmpty(textBoxAttachment.Text.Trim())) 
     { 
      Attachment data = new Attachment(textBoxAttachment.Text.Trim()); 
      mail.Attachments.Add(data); 
     } 
     if(!string.IsNullOrEmpty(textBoxAttachment2.Text.Trim())) 
     { 
      Attachment data = new Attachment(textBoxAttachment2.Text.Trim()); 
      mail.Attachments.Add(data); 
     } 
     if(!string.IsNullOrEmpty(textBoxAttachment3.Text.Trim())) 
     { 
      Attachment data = new Attachment(textBoxAttachment3.Text.Trim()); 
      mail.Attachments.Add(data); 
     } 

Это должно устранить проблему.

+0

Pffff .... как легко было! Большое спасибо!!! – Valeriu92

+0

@ user3183299 добро пожаловать, вы можете принять ответ, если бы помогли вам! Удачи с вашим проектом :) – mybirthname

Смежные вопросы