如何通过Outlook从outlook发送电子邮件

时间:2010-10-02 07:14:52

标签: java email outlook

我使用以下代码在域内发送邮件。

public void sendMail(String mailServer, String from, String to,
            String subject, String messageBody, String[] attachments)
            throws MessagingException, AddressException {
        // Setup mail server
        Properties props = System.getProperties();
        props.put("mail.smtp.host", mailServer);

        // Get a mail session
        Session session = Session.getDefaultInstance(props, null);

        // Define a new mail message
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
        message.setSubject(subject);

        // Create a message part to represent the body text
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setText(messageBody);

        // use a MimeMultipart as we need to handle the file attachments
        Multipart multipart = new MimeMultipart();

        // add the message body to the mime message
        multipart.addBodyPart(messageBodyPart);

        // add any file attachments to the message
        addAtachments(attachments, multipart);

        // Put all message parts in the message
        message.setContent(multipart);

        // Send the message
        Transport.send(message);
        System.err.println("Message Send");

    }

    protected void addAtachments(String[] attachments, Multipart multipart)
            throws MessagingException, AddressException {
        for (int i = 0; i < attachments.length ; i++) {
            String filename = attachments[i];
            MimeBodyPart attachmentBodyPart = new MimeBodyPart();

            // use a JAF FileDataSource as it does MIME type detection
            DataSource source = new FileDataSource(filename);
            attachmentBodyPart.setDataHandler(new DataHandler(source));

            // assume that the filename you want to send is the same as the
            // actual file name - could alter this to remove the file path
            attachmentBodyPart.setFileName(filename);

            // add the attachment
            multipart.addBodyPart(attachmentBodyPart);
        }
    }

但如果使用相同的代码我尝试在域外发送电子邮件,说我发送电子邮件从mjsharma@domain.com到mhsharma @ gmail,com然后它失败并给我以下错误。 550 5.7.1 Rcpt command failed: Mail denied due to site's policy

我在上面的代码中遗漏了什么。 请帮帮我

3 个答案:

答案 0 :(得分:1)

我怀疑您的代码中没有问题,但是在您的邮件服务器(sendmail?)配置中。我会跟管理你邮件基础设施的人说话。

答案 1 :(得分:0)

您的本地邮件服务器可能需要您在向世界发送邮件之前进行身份验证。这是防止垃圾邮件发送者relaying their mail通过它的常见政策。

答案 2 :(得分:0)

假设您的计算机已安装Outlook ...您是否尝试过使用moyosoft的java outlook连接器?它使用非常简单并通过网络限制,因为它连接到您的Outlook应用程序然后发送邮件,因此如果您的Outlook客户端工作正常,将忽略对smtp端口或服务器/代理策略的任何限制。

如果您使用命令行服务器端进行此操作,那么我猜这个答案对您来说毫无用处。

来源:我有类似的问题(不是相同的错误代码,更像是内部网限制)并且使用此库解决了我的问题,因为上面发布了。