我正在尝试在Win7机器上使用sendEmail发送电子邮件。它工作正常,但我决定将主题和消息作为参数发送到sendEmail方法。
因为主题和正文包含短划线字符,所以sendEmail没有正确反应,因为它也使用了短划线字符。我需要做的是在subjectText变量和messageText变量周围添加双引号。
stdin.println("sendemail -t " + emailAddresses + " -f admin@xyz.com -u " +
subjectText + " -m " + messageText + " -s smtp.gmail.com:25");
我试过了:
stdin.println("sendemail -t " + emailAddresses + " -f admin@xyz.com -u " + \" +
subjectText + "\"+ -m "\"+ messageText + "\" -s smtp.gmail.com:25");
但它不起作用。
输出需要看起来像这样:
"sendemail -t tome@isp.com -f admin@xyz.com -u "Subject with a - char" -m "message body with a - char" -s smtp.gmail.com:25"
cmd将在我的Eclipse控制台中显示。
感谢您的帮助......
答案 0 :(得分:4)
正如其他人所说,转义的引号需要在文字内。
作为一些额外的思考食物;使用String.format()
或使用StringBuilder
创建包含变量的字符串时,有时可能更整洁或更简单。
使用String.format
String str = String.format(
"sendemail -t %s -f admin@xyz.com -u \"%s\" -m \"%s\" -s smtp.gmail.com:25",
emailAddress, subjectText, messageText);
答案 1 :(得分:1)
您的转义双引号本身必须位于字符串文字内。尝试
stdin.println("sendemail -t " + emailAddresses + " -f admin@xyz.com -u \"" +
subjectText + "\" -m \"" + messageText + "\" -s smtp.gmail.com:25");