私のプログラムで現在問題が発生しています。私はsmtpで電子メールを送信する方法を習得しようとしています。 button1をクリックしようとすると、プログラムがフリーズして何も起こりません。 PS:明らかに、私は電子メールとパスワードを「電子メール」と「パスワード」に変更してからこれを送信しました。 PS2:私はポルトガル語で自分のコードを書いていますので、変数や "x"と考えるだけでは理解できないことがあります。smtpで電子メールを送信しようとしたときにプログラムがフリーズする
EDIT:単純な行で問題を解決しました。プログラムにポートがありません。同じ問題を抱えていますが、smtp.Port = 587を追加するだけです。 。以下
コード:
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 MySql.Data.MySqlClient;
using System.Net;
namespace Inicio
{
public partial class Email : Form
{
MySqlConnection con = new MySqlConnection(@"Data Source=localhost;port=3306;Initial Catalog=digital wallet;User ID=root;password=");
public Email()
{
InitializeComponent();
}
private void SendEmail()
{
if (textBox1.Text == "" || textBox2.Text == "")
{
MessageBox.Show("Preencha todos os campos", "Erro",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
int i = 0;
con.Open();
MySqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select EMAIL from conta where EMAIL = @email and LOGIN = @login ";
cmd.Parameters.AddWithValue("@email", textBox2.Text);
cmd.Parameters.AddWithValue("@login", textBox1.Text);
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(dt);
i = Convert.ToInt32(dt.Rows.Count.ToString());
if (i == 0)
{
MessageBox.Show("Login ou email inválidos", "Erro",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
cmd.CommandText = "select * from CONTA where LOGIN = @login";
cmd.ExecuteNonQuery();
string senha = "";
string email = "";
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
senha = reader.GetString("SENHA");
email = reader.GetString("EMAIL");
}
reader.Close();
using (SmtpClient smtp = new SmtpClient())
{
smtp.Host = "outlook.com";
smtp.UseDefaultCredentials = false;
NetworkCredential netCred = new NetworkCredential("email", "password");
smtp.Credentials = netCred;
smtp.EnableSsl = true;
using (MailMessage msg = new MailMessage("email", email))
{
msg.Subject = "Recuperação de senha.";
StringBuilder sb = new StringBuilder();
sb.AppendLine("A sua senha é atual é: " + senha + Environment.NewLine);
sb.AppendLine("Obrigado," + Environment.NewLine);
sb.AppendLine("Digital wallet. " + Environment.NewLine);
msg.Body = sb.ToString();
msg.IsBodyHtml = false;
smtp.Send(msg);
}
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
SendEmail();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
はまあ...私がやるべき仕事を持っているようだ ダニエルについてお役に立てば幸いです。 –