CSmtp classを使用して添付ファイルを送信する際に問題があります。
そのリンクのコードは次のとおりです。
int SendMail()
{
bool bError = false;
try
{
CSmtp mail;
#define test_gmail_tls
#if defined(test_gmail_tls)
mail.SetSMTPServer("smtp.gmail.com",587);
mail.SetSecurityType(USE_TLS);
#elif defined(test_gmail_ssl)
mail.SetSMTPServer("smtp.gmail.com",465);
mail.SetSecurityType(USE_SSL);
#elif defined(test_hotmail_TLS)
mail.SetSMTPServer("smtp.live.com",25);
mail.SetSecurityType(USE_TLS);
#elif defined(test_aol_tls)
mail.SetSMTPServer("smtp.aol.com",587);
mail.SetSecurityType(USE_TLS);
#elif defined(test_yahoo_ssl)
mail.SetSMTPServer("plus.smtp.mail.yahoo.com",465);
mail.SetSecurityType(USE_SSL);
#endif
mail.SetLogin("email@email.com");
mail.SetPassword("password");
mail.SetSenderName("");
mail.SetSenderMail("email@email.com");
mail.SetReplyTo("");
mail.SetSubject("Subject");
mail.AddRecipient("email@email.com");
mail.SetXPriority(XPRIORITY_NORMAL);
mail.SetXMailer("The Bat! (v3.02) Professional");
mail.AddMsgLine("Hello,");
mail.AddMsgLine("you have been successfully registered!");
mail.AddMsgLine(" ");
mail.AddMsgLine("Username: ");
mail.AddMsgLine("Password: ");
mail.AddMsgLine(" ");
mail.AddMsgLine("See ya!");
mail.AddAttachment("C:\\Users\\Jenda\\AppData\\Roaming\\text.dat");
mail.Send();
}
catch(ECSmtp e)
{
std::cout << "Error: " << e.GetErrorText().c_str() << ".\n";
bError = true;
}
if(!bError)
std::cout << "Registration E-Mail was sent on given address.\n";
return 0;
}
添付ファイルの行にコメントを付けると、電子メールが正常に送信されます。しかし、その添付ファイルを送信しようとすると、そこで停止して何もしないように見えます-エラーも何も返されません。何もしないだけです(ただし、タスクマネージャーによると、応答しています)。
また、2 つ目の質問があります。添付ファイルのパス (C:\Users\Jenda\AppData\Roaming\text.dat) が表示されますか? プログラムがユーザー (名前) に関する情報を取得する方法と、それをパスに追加してすべてのコンピューターで機能する方法を教えてください。C:\Users\ WINDOWSUSERNAME \...
以上です。すべての回答とアイデアに感謝します。
PS Windows7 32bit と Visual c++ Express 2010 を使用しています。