это резюме моей заявки: Я сделал это приложение в 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 Было проще, если бы я мог вставлять картинки в свою программу.
Используйте свой отладчик. Какая строка бросает эту ошибку? Почему существует пустая строка? 'fileName' не звучит как электронная почта для меня, вы уверены, что это не строки, которые прикрепляют файлы к электронной почте, которые бросают ошибку? Вы собираетесь каждый раз прикладывать три файла? Если у вас нет чего-то во всех текстовых полях вашего приложения, вы получите сообщение об ошибке ... –
Это моя ошибка: {«Параметр« имя_файла »не может быть пустой строкой. \ R \ nParameter name: fileName"} – Valeriu92
По-видимому, один или несколько «textBoxAttachment.Text» vars пуст. Вам нужно проверить это, прежде чем создавать объекты «Вложения». –