| 144 | } |
| 145 | |
| 146 | func (dtd *testTargetDelivery) Body(ctx context.Context, header textproto.Header, buf buffer.Buffer) error { |
| 147 | if dtd.tgt.PartialBodyErr != nil { |
| 148 | return errors.New("partial failure occurred, no additional information available") |
| 149 | } |
| 150 | if dtd.tgt.BodyErr != nil { |
| 151 | return dtd.tgt.BodyErr |
| 152 | } |
| 153 | |
| 154 | dtd.msg.Header = header |
| 155 | |
| 156 | body, err := buf.Open() |
| 157 | if err != nil { |
| 158 | return err |
| 159 | } |
| 160 | defer func() { |
| 161 | if err := body.Close(); err != nil { |
| 162 | panic(err) |
| 163 | } |
| 164 | }() |
| 165 | |
| 166 | if dtd.tgt.DiscardMessages { |
| 167 | // Don't bother. |
| 168 | _, err = io.Copy(io.Discard, body) |
| 169 | return err |
| 170 | } |
| 171 | |
| 172 | dtd.msg.Body, err = io.ReadAll(body) |
| 173 | return err |
| 174 | } |
| 175 | |
| 176 | func (dtd *testTargetDelivery) Abort(ctx context.Context) error { |
| 177 | return dtd.tgt.AbortErr |