package com.fsck.k9.mail.internet;
import java.util.Locale;
import java.util.UUID;
import android.support.annotation.VisibleForTesting;
import com.fsck.k9.mail.Address;
import com.fsck.k9.mail.Message;
public class MessageIdGenerator {
public static MessageIdGenerator getInstance() {
return new MessageIdGenerator();
}
@VisibleForTesting
MessageIdGenerator() {
}
public String generateMessageId(Message message) {
String hostname = null;
Address[] from = message.getFrom();
if (from != null && from.length >= 1) {
hostname = from[0].getHostname();
}
if (hostname == null) {
Address[] replyTo = message.getReplyTo();
if (replyTo != null && replyTo.length >= 1) {
hostname = replyTo[0].getHostname();
}
}
if (hostname == null) {
hostname = "email.android.com";
}
String uuid = generateUuid();
return "<" + uuid + "@" + hostname + ">";
}
@VisibleForTesting
protected String generateUuid() {
// We use upper case here to match Apple Mail Message-ID format (for privacy)
return UUID.randomUUID().toString().toUpperCase(Locale.US);
}
}