-
- public Message(Stream stream, Envelope envelope) throws Malformed {
- super(stream, null, false);
- Vec resent = new Vec(), traces = new Vec();
- this.envelope = Envelope.augment(envelope, headers);
- this.to = headers.get("To") == null ? envelope.to : Address.parse(headers.get("To"));
- this.from = headers.get("From") == null ? envelope.from : Address.parse(headers.get("From"));
- this.replyto = headers.get("Reply-To") == null ? null : Address.parse(headers.get("Reply-To"));
+ public static Message newMessage(Fountain in) throws Malformed { return new Message(in, null); }
+ public static Message newMessageFromHeadersAndBody(Headers head, Fountain body, Address from, Address to) throws Malformed {
+ return new Message(Fountain.Util.concat(head, Fountain.Util.create("\r\n"), body),
+ new String[] {
+ "Return-Path", from==null ? "<>" : from.toString(true),
+ "Envelope-To", to.toString(true)
+ });
+ }
+ /*
+ public static Message newMessageWithEnvelope(Fountain in, Address from, Address to) throws Malformed {
+ return new Message(in,
+ new String[] {
+ "Return-Path", from==null ? "<>" : from.toString(true),
+ "Envelope-To", to.toString(true)
+ });
+ }
+ */
+ public Message withEnvelope(Address from, Address to) {
+ return new Message(this,
+ new String[] {
+ "Return-Path", from==null ? "<>" : from.toString(true),
+ "Envelope-To", to.toString(true)
+ });
+ }
+ private Message(Fountain in, String[] keyval) throws Malformed {
+ super(in, keyval);
+
+ this.envelopeTo = headers.get("Envelope-To") != null ? Address.parse(headers.get("Envelope-To")) : null;
+ this.envelopeFrom = headers.get("Return-Path") != null ? Address.parse(headers.get("Return-Path")) : null;
+ this.to = headers.get("To") != null ? Address.parse(headers.get("To")) : this.envelopeTo;
+ this.from = headers.get("From") != null ? Address.parse(headers.get("From")) : this.envelopeFrom;
+ this.replyto = headers.get("Reply-To") == null ? null : Address.parse(headers.get("Reply-To"));