java gmail邮箱发送邮件
时间: 2025-06-15 11:09:15 浏览: 9
### 使用Java通过Gmail SMTP发送邮件的解决方案
以下是基于提供的引用内容以及专业知识编写的示例代码,展示如何使用Java通过Gmail SMTP服务器发送电子邮件。
#### 配置JavaMail属性
为了成功连接到Gmail的SMTP服务器并发送邮件,需要正确设置`Properties`对象中的参数。这些参数包括主机名、端口号、身份验证标志以及其他必要的安全选项[^3]:
```java
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class GmailEmailSender {
private static final String SMTP_HOST = "smtp.gmail.com";
private static final int SMTP_PORT = 587; // Use port 587 for TLS or 465 for SSL
private static final String USERNAME = "[email protected]"; // Replace with your Gmail address
private static final String PASSWORD = "your-app-password"; // Replace with your app-specific password
public static void sendEmail(String recipient, String subject, String content) {
Properties properties = new Properties();
properties.put("mail.smtp.host", SMTP_HOST);
properties.put("mail.smtp.port", Integer.toString(SMTP_PORT));
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true"); // Enable STARTTLS encryption
Session session = Session.getInstance(properties, null);
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(USERNAME)); // Sender's email address
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient, false)); // Recipient's email address
message.setSubject(subject); // Subject of the email
message.setText(content); // Content/body of the email
Transport transport = session.getTransport("smtp");
transport.connect(SMTP_HOST, USERNAME, PASSWORD); // Authenticate using credentials
transport.sendMessage(message, message.getAllRecipients()); // Send the email
System.out.println("Email sent successfully.");
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String recipient = "[email protected]"; // Replace with actual recipient's email
String subject = "Test Email from Java";
String content = "This is a test email sent via Java and Gmail SMTP server.";
sendEmail(recipient, subject, content);
}
}
```
#### 关键点说明
1. **SMTP Host 和 Port**: 上述代码中使用的SMTP主机名为`smtp.gmail.com`,端口为`587`(适用于TLS加密)。如果更倾向于SSL,则可以改用端口`465`。
2. **身份验证**: Google要求启用两步验证,并生成专用的应用程序密码来代替常规账户密码[^1]。
3. **异常处理**: `MessagingException`被用来捕获任何可能发生的错误,例如网络问题或认证失败等问题[^2]。
#### Spring框架集成方式
如果您正在开发Spring项目,可以通过注入`JavaMailSender`实例简化邮件发送逻辑[^5]。下面是一个简单的例子:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
public void sendSimpleMessage(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
javaMailSender.send(message);
}
}
// Configuration Class Example
@Configuration
public class MailConfig {
@Bean
public JavaMailSender getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);
mailSender.setUsername("[email protected]");
mailSender.setPassword("your-app-password");
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
return mailSender;
}
}
```
---
阅读全文
相关推荐


















